はじめに
今回は、LaravelでFormからPUT、PATCH、DELETEリクエストを送る方法をアウトプットします。前提として、HTMLのformタグがこれらの形式をサポートしていないため、実際のところPOST送信となっています。それを回避するための対策です。
POST,PUT,PATCHの使い分けの参考資料
ルート定義メソッドの機能名等についての参考資料
結論
(例)このようなフォームがあったとします。
hoge.blade.php
<form action="{{ url('/posts',$post->id) }}" method="post">
@method('PATCH')
@csrf
</form>
上記のように、Baldeのディレクティブを使って、@method('PATCH')と記述してあげれば、Laravelで送信形式をPATCHと判断することができます。
PUTとDELETEに関しても、ここのPATCHの箇所を置き換えていただければ大丈夫です。
では、実際に試して確認してみましょう。
まず、HTTP動詞に対応したルートを定義してあげます。
web.php
Route::patch('/posts/{post?}','PostsController@update');
PostsController.php
public function update(Request $request)
{
dd($request->method());
}
dd関数を使用して、リクエストされたメソッドを確認してみると
はい、ちゃんとメソッドが確認できていますね!
おわりに
アウトプットというよりもメモになってしまいましたね(笑)もし内容に誤りがありましたら、お手数ですがご指摘をよろしくお願い致します。読んでいただき、ありがとうございます。