Laravel

【初心者向け】Laravelのルーティングにはnameを指定したい

いつもご利用ありがとうございます。このブログは、広告費によって運営されています。

オススメ本
Web技術を勉強するなら、かなりオススメの雑誌です。毎月新しい発見があります。ついに最終号・・・、みなさん買いましょう!!
読んで損することはない名著。命名で悩むことが多い人はこの本がオススメです。

Laravel のルーティングの書き方については、以前このような記事を書きました。

上記の記事では、これを覚えて使えば、ほぼほぼ問題がないという書き方についてまとめたものです。

そこから派生して、ルーティングに name を付ける方法について書いていきます。

⇨Laravel のルーティングの書き方

⇨ ログイン認証したユーザーだけが使えるルーティングの書き方

⇨ 複数の middleware を指定したルーティングの書き方

なぜ name をつけるのか

サービスを作っていると、URL を変更したくなるときが発生します。

例えば、ユーザビリティや管理のしやすさ、URL の階層の変更などです。

そういったときに、name を指定しておくと、web.php だけ変更すれば対応する URL が勝手に変更されることになります。

基本的な書き方

基本的なコードがこれです。

Route::get('/home', 'HomeController@index')->name('home');

これが name を指定した書き方となります。

前回の記事では

Route::get('/home', 'HomeController@index');

だったと思うのですが、それに->name(‘home’)を付け加えただけとなります。

この home に該当する部分は、完全に任意の文字をこちらで付けて良いですが、開発現場の方向性、命名規則に乗っ取ったものを記述します。

name で階層を付けるときは、

->name('post.index')

このように「.」を使って階層を作ります。

基本的な呼び出し方

route('home')
route('post.index')

などで呼び出すことができます。

実際の例としては、

a タグのリンクに指定する場合

<a href="{{ route('home') }}">ホーム</a>

form に使う

<form methods="GET" action="{{ route('home') }}">

</form>

Controller の中で使う

  return redirect()->route('home');
  const home_url = route('home');

こんな感じで呼び出すことができます。

たまにある勘違い

Laravel は、他の機能で階層を指定するときに、「post/index」の階層を「post.index」で書くことができる、みたいなことがあります。

ですが、ルーティングの name に関しては、それが許されず、完全に一致しないと動きません。

例えば、name(‘post.index’)のとき

×route('post/index')
○route('post.index')

となります。

まとめ

以上が、Laravel のルーティングで name を指定する方法と、ルーティングを指定した方が良い理由となります。

初学者の方は、色々な記事があるので大変だと思いますが、name を指定するかしないかで迷ったら、「指定する」でいいと思います。

何か訂正箇所などありましたら、Twitter の DM で教えていただければと思います。

最後まで読んでいただきありがとうございました。