Laravelにはルートに名前をつける機能があります。
routes/web.php
Route::get('users/{id}/profile', function () {
//
})->name('user.profile');
この時、view側で
views/index.blade.php
{{ route('user.profile', ['id' => 1]) }}
このようにするとroute名に従ってuser/1/profile
のようなurlが生成されます。
利点
名前を付けなくても、当然アクセスすることはできますが、以下の3つの利点があるので名前をつける運用をしていった方が良いかなと思います。
- URLを一括で変更することが出来る
- 存在しないurlの時にエラーになる
- (PHPStormを使っている場合)補完される
URLを一括で変更することが出来る
view側で
{{ url('/users/1/profile') }}
のように書いてしまうと、URLを変更することになった場合、viewの中から同じ箇所を探さないといけませんが、
{{ route('user.profile', ['id' => 1]) }}
としていればroutes/web.php
だけ変更すれば良いです。
存在しないurlの時にエラーになる
url('/users/1/profile')
の場合、そのURLが存在する保証はありませんが、
route('user.profile', ['id' => 1])
の場合そのルートが存在しなければエラーになります。
(PHPStormを使っている場合)補完される
PHPStormを使っていてLaravelプラグインを使っていると、route関数を使おうとすると補完されます。