Laravelにて1つのFormで複数ボタンを実装する際の備忘録

Laravelのロゴ 備忘録

どうもmizukiです。1つのフォーム内に送信と削除のボタンを設置しようとしたら結構ハマりました。
前に実装したのがデスマーチ中で記憶があいまいだったので、備忘録を残します。

やりたい事

同一のフォーム内にて複数のボタンを利用したい。

開発環境

Laravel Framework 6.2.0

実装方法

Route

POSTで飛ばそう!

Route::post('test/admin','AdminController@buttonTest');

View

ボタンのnameプロパティを設定します。

<form action=" /test/admin" method="post">

    (このあたりにinputとか)
    <button class="btn btn-primary" name="send" type="submit">送信する</button>
    <button class="btn btn-danger" name="delete" type="submit">削除する</button>
</form>

Controller

Viewで設定したnameをリクエストから参照します。


use Illuminate\Http\Request;

public function buttonTest(Request $request)
{

    if($request->has('send')){

        // ここに送信ボタン押下時の処理

    }elseif($request->has('delete')){

        // ここに削除ボタン押下時の処理
    }

}

ナレッジ

もしFormを入れ子にすると上手く動かなくなるので、その場合はFormに名前を付ける
Fromとタイポしてはいけない(意味は通るのでタイポチェッカーをすり抜ける)

まとめ

・ボタンのnameプロパティを設定して、リクエストで飛んで来たものをコントローラで判定する

やり方合っているかわかりませんが、とりあえずボタンの判定できているにでヨシ!
開発頑張りましょう!

コメント

タイトルとURLをコピーしました