1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

laravelのルーティングは間違っていないのに違うメソッドが呼ばれてしまう時の対処

Last updated at Posted at 2019-07-15

###エラーが起こった時のlaravelの設定
新規登録、編集画面から投稿確認画面に移り、ボタンを押すとstoreメソッドが実行され、テーブルに情報が反映されるという流れ。

####投稿確認画面

confirm.blade.php
 {!! Form::open(['route' => 'question.store', 'method' => 'POST']) !!}
 ~省略~
 {!! Form::close() !!}

####ルーティングの設定

routes/web.php
php artisan route:list

|        | POST      | question                               | question.store               | App\Http\Controllers\QuestionController@store                                     | web,auth                                             |
|        | GET|HEAD  | question                               | question.index               | App\Http\Controllers\QuestionController@index                                     | web,auth                                             |
|        | POST      | question/confirm                       | question.confirm             | App\Http\Controllers\QuestionController@confirm                                   | web,auth                                             |
|        | GET|HEAD  | question/create                        | question.create              | App\Http\Controllers\QuestionController@create                                    | web,auth                                             |
|        | GET|HEAD  | question/mypage                        | question.mypage              | App\Http\Controllers\QuestionController@showMyPage                                | web,auth                                             |
|        | GET|HEAD  | question/{question}                    | question.show                | App\Http\Controllers\QuestionController@show                                      | web,auth                                             |
|        | PUT|PATCH | question/{question}                    | question.update              | App\Http\Controllers\QuestionController@update                                    | web,auth                                             |
|        | DELETE    | question/{question}                    | question.destroy             | App\Http\Controllers\QuestionController@destroy                                   | web,auth                                             |
|        | GET|HEAD  | question/{question}/edit               | question.edit   

なのに実際、ボタンを押すと以下のエラーが出てびっくり

Trying to get property of non-object (View: resources/views/user/question/show.blade.php)

###アホ!!!そんなわけあるかい!!!俺は信じひんぞ!!!!
そう、showメソッドが実行されている
何回もルーティングを見直していたけど、Route::resource()で設定している以上、間違っているということはないはず。
実はこのエラーはformタグで作っていた時にも出ていたから、Formファサードを使えば解消されると思っていたのに、上のように変えてもこのエラーが出た。

###解決した、たった4行のコマンド

$ php artisan cache:clear
$ php artisan config:clear
$ php artisan route:clear
$ php artisan view:clear

キャッシュが悪さをしていた、こんなの気付くかよ...

###おわりに
どうみても間違いが見つからないときはキャッシュクリアしてみよう。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?