Laravel Routeにnameを設定・使い方

Laravelでrouteを利用して、viewを呼び出す際に、Routeにnameを設定する方法を紹介します。

routes\web.php(Routeを設定しているファイル)で、nameを設定します。

 Route::get('/profile', 'mypageController@profile')->name('profile');

記載方法はRouteの最後に、
->name(route名称)でrouteの名称を設定することが出来ます。

nameを設定するメリットについては、Qiitaで分かりやすく解説している方がいたので、ご確認下さい。
Laravel使うならrouteには名前をつけたほうが良い

もう少し使い方について解説します。
Routeでのname設定は、名称を設定しただけです。
これを実際にnameを呼び出して使う方法を紹介します。

routeを使うときは、view bladeの中から呼び出します。

例えば、href にて、リンク先を/profileに設定したい際には、
先ほど、設定したnameを呼び出すカタチで下記のようにリンクに設定します。

<a class="nav-link" href="{{ route('profile') }}">Profile</a>

で、この例だと、ただ、リンクに飛ばしているだけじゃないか、と思うかもしれません。

ここで実験して欲しいのですが

Route:

 Route::get('/profile', 'mypageController@profile')->name('profile.gogogo');

View:

<a class="nav-link" href="{{ route('profile.gogogo ') }}">Profile</a>

と設定しても、/profileへリンクされるのです。
nameはただRouteを接続してくれているだけです。
Routeに設定してある、/profileへの接続は変わりません。

もう一点、私が少し混乱したことについて追記します。
Route設定で、group設定を使う人も多くいると思います。

例えば、下記のようにRoute設定した場合

Route::name('admin.')->group(function () {
   Route::get('/profile', 'mypageController@profile')->name('profile'); 
});

Viewでname を使って、Routeを呼び出す方法は

<a class="nav-link" href="{{ route(' admin.profile') }}">Profile</a>

group 化のname設定によって、nameがadmin.XXXXと設定する必要が出てきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です