[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でしっかりとれています!!