[0008]Viewに複数SUBMITボタンを用意しControllerでアクション取得

■View

「登録」や「戻る」など同じView内に複数SUBMITボタンを配置し、どのボタンを押されたかControllerで判別したいときのメモです。

この例ではビュー(View)名は[confirm]です。Lalavelフレームワークのバージョンは5.5です。

confirm.blade.php

              
{!! Form::open(['route'=>['confirm'],'method'=>'post','id'=>'form','autocomplete'=>'off']) !!}
	{!! Form::button("戻る", ['type'=>'submit','name'=>'back','value'=>1]) !!}
	{!! Form::button("登録", ['type'=>'submit','name'=>'send','value'=>1]) !!}
{!! Form::close() !!}
              
            

submitアクションがあるボタンにnameとvalueをつけるだけです!!

戻るボタンには'name'=>'back'で名前をbackにしています。valueは受け取る側のソース次第ですが、値があるかチェックに使うので1をセットしています。

登録ボタンには'name'=>'send'で名前をsendにしています。どちらのボタンが押されたか判別したいので同じnameはつけてはいけません。

次はController側です

■Controller

routeでconfirmにセットしているControllerの関数が呼び出されますのでこの例ではconfirm関数で判別します。

この例ではコントローラ(Controller)名は[Test]です。

TestController.php

              
public function confirm(Request $request)
{
    $all_req = $request->all();
    if($request['confirm']){
        //登録内容を確認
    }elseif($request['send']){
        //登録
    }elseif($request['back']){
        //戻る
        return redirect('/')->withInput($all_req);
    }
    return redirect('/');
}
              
            

Requestでしっかりとれています!!