実践Laravel 基本編2 ルーティング1

Posted: 2014-05-26 23:11 |  laravel 

■Laravelのルーターはコントローラー要らず

■ルーター概要

composerでlaravelインストール後デフォルトでは下記の様なルーティングが指定されています。
Route::get('/', function()
{
    return View::make('hello');
});
これは、GETリクエストでrootにアクセスした場合に、
app/views/hello.phpまたはhello.blade.php を出力する、という指定です。
Laravelでは、PHP MVCフレームワークの多くが採用している、

ドメイン/コントローラー/メソッド 

という形式ではありません。
また、必ずしもcontrollerを介さなければいけないという事もありません。
この辺りはrubyのフレームワークsinatraに似ています。

■コントローラー無しのルーティング

コントローラーを使用せずにルーターのみで実装する場合は、いくつかパターンがあります。
実際に動かしながら実装してみましょう。
ビルトインサーバは下記コマンドです
$ php artisan serve
デフォルトでhttp://localhost:8000 でアクセスできるようになります。
portやhostを変更する場合は、下記のように実行します。
$ php artisan serve --host="..." --port="..."
laravelの画面が表示されずに真っ白の場合は、app/storageディレクトリに実行権限を与えてください。
$ chmod -R 777 app/storage
Viewを使わずに、直接出力するように変更します。
\Route::get('/', function()
{
	return 'hello';
});
画面上にhelloが表示されます。
get以外でアクセスした場合は、エラーまたは、
Whoops, looks like something went wrong. が表示されます。
$ curl http://localhost:8000 -X POST
下記のようにPOSTに対応した処理を追加して同様にアクセスしてみてください。
\Route::post('/', function()
{
    return 'post hello';
});
このようにそれぞれのGET, POSTでルーティングが設定できます。
GET、POST共に一つのuriで使用したい場合は、
\Route::any('/', function()
{
    return 'both';
});
となります。

■ルーティングで引数

上記の様なルーティングで、引数を利用する場合は、下記のように使用します。
\Route::get('/{string?}', function($string = 'Laravel')
{
	return "{$string} hello";
});
ルートにアクセスした場合に、デフォルト指定されている"Laravel"が挿入されます。
ルートの後ろに文字列を加えると、$stringに引数が反映されます。
引数を使用する場合は、uriには{arg?} の様に指定し、無名関数の引数に同様に加えます。
クエリーで値を受け取る場合は、
\Input::get('key');
で取得できます。

■uriに制限を加える

Route::patternを使用して、uriに正規表現を加える事ができます。
Routeである程度制御する事が可能です。
\Route::pattern('string', '[a-z0-9\-]+');
上記のようにした場合は、{string?}で許可されるものは半角英数字と-のみとなり、
日本語等が含まれる場合はエラーとなります。

今回紹介したものは
Illuminate.Routing.Router
が該当しますので、是非ご覧ください

about ytake

執筆に参加しています


Laravel お役立ち情報

share



このエントリーをはてなブックマークに追加

Categories

laravel 45

DTM 0

music 0

PHP全般 31

0

JAPAN 1

WORLD 1

javascript 4

RDBMS 1

NoSQL 1

NewSQL 1

Recent Posts

Ad

comments powered by Disqus

GitHub

Social Links

Author


クリエイティブ・コモンズ・ライセンス
Yuuki Takezawa 作『Ytake Blog』はクリエイティブ・コモンズ 表示 - 非営利 4.0 国際 ライセンス で提供されています。

© ytake/comnect All Rights Reserved. 2014