LoginSignup
6
2

More than 3 years have passed since last update.

[Laravel 5.6] ルーティングを書く順番をミスって画面真っ白から抜け出せなくなった話

Last updated at Posted at 2018-08-01

ルーティングを書く順番の大切さ

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/hogehogehogehoge がパラメーターとして user/{user}{user} の中に入ってしまい、User コントローラーの show メソッドが呼ばれてしまいます。

ルーティングの書く順番を入れ替えれば正しく表示されるはずです!

web.php
Route::get('/user/hogehoge', 'UserController@hogehoge');
Route::resource('/user', 'UserController');  // resource を下に

以上~

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2