LaravelのFormからPUT / PATCH / DELETEリクエストをおくる
FormからREST APIを呼び出す画面を作成していたのですが、いまのところおそらく、HTMLのFormからPUT/PATCH/DELETEリクエストを送ることができません。
理由は、なぜ html の form は PUT / DELETE をサポートしないのか?が詳しい。
Laravelでは、以下のように記載することでフォームからのGET/POST以外のリクエストをサポートしています。
Laravel >= 5.6
<form action="/foo/bar" method="POST"> @method('PUT') </form>
Laravel < 5.5
<form action="/foo/bar" method="POST"> <input type="hidden" name="_method" value="PUT"> </form>
試してみます
routes/web.php
Route::any('/', 'IndexController@any');
index.blade.php
<form action="/" method="POST"> @method('PUT') @csrf <input type="submit"> </form>
IndexController.php
public function any(Request $request) { dd($request->method()); }
結果
PUT
期待通りのうごきになりました。おわり。