PHP
laravel

Laravel使うならrouteには名前をつけたほうが良い

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が生成されます。

利点

名前を付けなくても、当然アクセスすることはできますが、以下の2つの利点があるので名前をつける運用をしていった方が良いかなと思います。

  • URLを一括で変更することが出来る
  • 存在しないurlの時にエラーになる

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])

の場合そのルートが存在しなければエラーになります。