はじめに
PHPでアプリケーション制作時、一つのform上に複数ボタンがあり、ボタンによってデータの送り先やメソッドを変更したかったのですが調べてみるとJavaScriptを使うのが一般的のようです。
ただ調べてみるとHTMLだけでもできたので書いておきます。
使い方
HTML5(今回使用するformaction
はHTML5から使えるようになりました)
html
<form method="post" action="?">
<input type="checkbox" name="id[]" value="1" >1
<input type="checkbox" name="id[]" value="2" >2
・
・
・
<!-- PUTメソッド -->
<button type="submit" formaction="送信先のurl" name="_METHOD" vlaue="put">更新</button>
<!-- DELETEメソッド -->
<button type="submit" formaction="送信先のurl" name="_METHOD" vlaue="delete">削除</button>
</form>
これで一つのフォームの中でチェックボックスの値をPUTとDELETEメソッドの両方に送ることができます。
ポイントは全体のformはpostメソッドで囲むことです、普段hiddenで_METHODプロパティを使ってputやdeleteメソッドを送るときと同じですね。
ただこうすると何も設定していないボタンはpostメソッドに送られてしまうので、普通に画面遷移などをする際にはそのボタンにgetメソッドを設定してください。