Laravel

Laravel「The GET method is not supported for this route. Supported methods: POST.」エラー解消

Laravelの更新画面(form)をPOSTで表示してて、更新画面を直接URLで表示した際に
The GET method is not supported for this route. Supported methods: POST.
エラーメッセージが表示されたので、その時の解消方法をご紹介します。

「The GET method is not supported for this route. Supported methods: POST.」の原因

The GET method is not supported for this route. Supported methods: POST.

をGoogle翻訳すると、

GET メソッドはこのルートではサポートされていません。 サポートされているメソッド: POST。

になります。
翻訳通りですが
「GET(直接URL)表示はサポートされて無なく、POST表示しかサポートして無いよ」
ってことですね。

Route(routes/web.php)の記述

更新画面の表示方法として以下を記述してしました。

//更新画面表示
Route::post('/productsedit/{products}','ProductsController@edit');

解消方法:Route(routes/web.php)にgetを追記

Route(routes/web.php)の記述「Route::post」の前に「Route::get」を追記するだけです。

//更新画面表示
Route::get('/productsedit/{products}','ProductsController@edit'); //get追記
Route::post('/productsedit/{products}','ProductsController@edit');

「Route::get」を追記することでGETがサポートされてないエラーメッセージが表示されることなく、更新画面を直接URLでも表示される様になりました。

更新画面だけでなくformでPOST送信して表示してる画面、例えばURLをブックマークしてて、後日ブックマークのURLを直接表示しようとした際に
The GET method is not supported for this route. Supported methods: POST.
エラーメッセージが表示される可能性があるので本記事の解消方法を試してみて下さい。

まとめ

Laravelで更新画面を直接URLで表示しようとした際に発生する「The GET method is not supported for this route. Supported methods: POST.」というエラーメッセージは、routes/web.phpにGETメソッドを追加することで解消できます。これにより、GETとPOSTの両方のメソッドでルートをサポートすることができ、ユーザビリティが向上します。実際のプロジェクトで試してみてください。

 
※流用される場合は自己責任でお願いします。