#ルーティングを書く順番の大切さ
Laravel でルーティングを書くとき Route::resource()
を使えば勝手にルーティングを生成してくれて便利です。
web.php
Route::resource('/user', 'UserController');
ただ、これ以外にも user まわりで新しいルーティングを使いたいときは自分で書き足す必要があります。
ここで注意。
ルーティングを書き足すとき、上の方に書いたルーティングが優先されます。
web.php
Route::resource('/user', 'UserController'); // こっちが優先!
Route::get('/user/hogehoge', 'UserController@hogehoge');
UserConstroller.php
class UserController extends Controller
{
public function hoge ()
{
return 'hoge!';
}
public index()
{
//
}
// 以下略
}
こう書いてしまうと、/user/hogehoge
にアクセスしても正しくビューが表示されません。
(私の場合はエラーもなく真っ白な画面が表示されました。。。)
これは /user/hogehoge
のルーティングよりも Route::resource()
で生成した user/{user}
(User コントローラーの show メソッド)の方が優先されることが原因です。
/user/hogehoge
の hogehoge がパラメーターとして user/{user}
の {user} の中に入ってしまい、User コントローラーの show メソッドが呼ばれてしまいます。
ルーティングの書く順番を入れ替えれば正しく表示されるはずです!
web.php
Route::get('/user/hogehoge', 'UserController@hogehoge');
Route::resource('/user', 'UserController'); // resource を下に
以上~