2020/08/12
Laravel5.2で更新処理と削除処理は少し注意しないといけません。
フォームタグのメソッドにPUTやDELETEを指定しても、HTMLフォームがそもそもこれらのメソッドに対応していないからです。
今回は見せかけのフォームメソッドについてのエントリーです。
RESTfulで設計するときの注意点
RESTとはHTTPのリクエストメソッドとURIに応じて操作対象を特定するという作り方です。
METHOD | URI | ACTION | 操作内容 |
---|---|---|---|
GET | /articles | ArticlesController@index | 一覧表示 |
GET | /articles/create | ArticlesController@create | 新規作成 |
POST | /articles | ArticlesController@store | 新規保存 |
GET | /articles/{id} | ArticlesController@show | 詳細表示 |
GET | /articles/{id}/edit | ArticlesController@edit | 編集 |
PUT/PATCH | /articles/{article} | ArticlesController@update | 更新 |
DELETE | /articles/{article} | ArticlesController@destroy | 削除 |
RESTの概念に基づいて設計されたものをRESTfulと言います。
このとき、 "更新" と "削除" は "PUT/PATCH" と "DELETE" のメソッドを指定するのですが、HTMLではサポートされていません。
どうすればいいでしょうか?
対策方法
こういうときは、formではPOSTメソッドを指定して、hiddenで_methodプロパティを指定します。
<form method="post" action="/users/{$data->id}"> <input name="_method" type="hidden" value="PUT"> <input type="text" name="name" /> <input type="submit" /> </form>
ヘルパー関数を使う場合は以下になります。
<form method="post" action="/users/{$data->id}"> {!! method_field('PUT') !!} <input type="text" name="name" /> <input type="submit" /> </form>
見せかけのフォームメソッドについては以上です。
PHPフレームワーク Laravel入門 第2版
僕がはじめてLaravelを学習するために参考にしたサイトは、掌田津耶乃(しょうだつやの)さんの libro というサイトです。当時(2016年)、Laravel学習サイトの中でもこのサイトは群を抜いてわかりやすく説明されていたので、とても勉強になったのを覚えています。この本は掌田津耶乃さんが書いた本なので、わかりやすく解説されているだろうと kindle で購入しました。2020年8月の時点でいうと日本国内にて唯一の Laravel の良書と言っても良いかと思います。口コミでもLaravel本のロングセラー定番解説書として認知されています。当サイトではチュートリアル形式でLaravelを解説しているので、初心者の方はこの本とセットで学習されるといいと思います。しかし、かなりわかりやすく解説されているとはいえ、PHP中級者以上のスキルは必要です。PHP自体の知識が乏しい方は 独習PHP 第3版 をあわせて購入することをお勧めします。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。