記述方法
ルーティングのname()
メソッドで、ルートに名前を付けることができる。
Route::メソッド('URL', 'コントローラー@アクション')->name('ルート名');
この名前を使ってルーティングのURLを得るには、route()
ヘルパーを使う。
route('ルート名')
URLにルートパラメーターを含む場合、route()
でパラメーターの値を設定して、これを含むURLを得ることができる。
route('ルート名', ['パラメーター' => 値])
ルートパラメーターが複数ある場合は連想配列の要素として列挙。いずれのパラメーターも省略することはできない。
route('ルート名', ['パラメーター1' => 値1, 'パラメーター2' => 値2])
例
ルーティングで以下のように記述する。
1 2 3 4 5 |
Route::get('/named_route', 'SampleController@named_route')->name('named_route'); Route::get('/named_route/{param}/set', 'SampleController@parameter_set') ->name('parameter_set'); Route::get('/named_route/first/{param1}/second/{param2}', 'SampleController@parameter_set') ->name('two_parameters'); |
コントローラーのnamed_route()
アクションでビューを呼び出す。
1 2 3 4 5 |
public function named_route() { return view('samples.named_route', [ 'title' => '名前付きルート' ]); } |
ビューの中で、route()
ヘルパーによってルーティングのURLを表示させる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>{{ $title }}</title> </head> <body> <h1>{{ $title }}</h1> <p>{{ route('named_route') }}</p> <p>{{ route('parameter_set', ['param' => 100]) }}</p> <p>{{ route('two_parameters', ['param1' => 100, 'param2' => 200 ])}}</p> </body> </html> |
結果は以下のように表示される。
名前付きルート
http://localhost:3000/named_route
http://localhost:3000/named_route/100/set
http://localhost:3000/named_route/first/100/second/200
http://localhost:3000/named_route
http://localhost:3000/named_route/100/set
http://localhost:3000/named_route/first/100/second/200
メリット
たとえばアンカータグのURLにルートパラメーターを含む場合、文字列で結合するよりも可読性が高くなる。
URLを変更した場合でも、ルーティングファイルのみ書き換えればよい。
このほか、RESTに基づくリソースルーティングの場合は、自動的に名前が付けられる。