LaravelのHTMLフォームでDELETEが送れない場合の対処方

Laravelのロゴ 備忘録

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

コメント

タイトルとURLをコピーしました