概要
Laravelで1つのフォームに複数のsubmitボタンを配置して、押されたボタンによって処理を分ける方法。
- ボタンにname属性を加える
- アクションの
Request
引数のhas
メソッドで、引数にname
属性の値を指定して、それらに応じた処理を記述する
例
以下のフォームを含むビューを準備する。
1 2 3 4 5 |
<form method="post"> @csrf <input type="submit" name="button1" value="ボタン1"> <input type="submit" name="button2" value="ボタン2"> </form> |
コントローラーに以下のアクションを準備し、フォームからのPOSTに対してルーティング設定する。
1 2 3 4 5 6 7 8 9 10 11 |
public function twoButtonsResult(Request $request) { if ($request->has('button1')) { $message = 'ボタン1が押されました'; } elseif ($request->has('button2')) { $message = 'ボタン2が押されました'; } else { $message = 'ボタンは押されませんでした'; } return $message; } |
ボタン1/ボタン2を押すと、それぞれのname属性の値に応じたメッセージが表示される。