LaravelのHTMLフォームからDELETEを送ろうとしたら上手く行かず、見事にハマったので備忘録を残します。
HTMLフォームからは「POST」しか送れないので、ルートで設定したDELETEアクションを実行するには隠しパラメータにて「DELETE」を設定する必要があります。
HTMLフォームはPUT、PATCH、DELETEアクションをサポートしていません。ですから、HTMLフォームから呼ばれるPUT、PATCH、DELETEルートを定義する時、フォームに_method隠しフィールドを追加する必要があります。_methodフィールドとして送られた値は、HTTPリクエストメソッドとして使用されます。
https://readouble.com/laravel/6.x/ja/routing.htmlより引用
開発環境
Laravel Framework 6.2.0
やりたいこと
ルートで設定したdeleteのアクションを呼び出したい。
ルート情報
Route::delete('/test/{id}/delete', 'TestController@delete');
NG
1行目にて、formに『method="delete"』と書けばルーティングしたDELETEが呼ばれると思ったけど、動作せず。HTMLフォームは『PUT、PATCH、DELETEアクションをサポートしていない』
OK
公式リファレンスを参考に、隠しパラメータ(3行目)にてDELETEを設定した。これでHTMLフォームからDELETEを送る事ができる。
まとめ
UT、PATCH、DELETEなどを使う場合はフォームの隠しパラメータにて設定する。
参考
※擬似フォームメソッドを参照
6.x ルーティング Laravel
コメント