我的表格带有复选框
@foreach($accounts as $acc)
<input type="checkbox" value="1" name="account[{{ $acc->id }}]" @if($acc->published) checked @endif>
@endforeach
如果未选中复选框,我如何传递0值?
我的控制器:
public function updateMon(Request $request) {
$request->validate([
'account' => 'required|array',
'account.*' => 'integer'
]);
foreach($account as $acc => $val) {
dd($val); //how get 0?
}
}
答案 0 :(得分:0)
复选框仅在选中时发布,因此在控制器中您可以使用此片段
public function updateMon(Request $request) {
$request->validate([
'account' => 'required|array',
'account.*' => 'integer'
]);
$myVar = isset($request->account[0]) ? 1 : 0;
}
答案 1 :(得分:0)
@foreach($accounts as $acc)
<input type="hidden" value="0" name="account[{{ $acc->id }}]">
<input type="checkbox" value="1" name="account[{{ $acc->id }}]" @if($acc->published) checked @endif>
@endforeach
在控制器中
public function updateMon(Request $request) {
$request->validate([
'account' => 'required|array',
'account.*' => 'boolean'
]);
foreach($account as $acc => $val) {
dd($val); //that returns 0 if not checked
}
}
如果上选中复选框比它得到值= 1 如果未选中复选框,则值为= 0
答案 2 :(得分:0)
使用Laravel Collective,
@foreach($accounts as $acc)
{{ Form::hidden('account['. $acc->id .']', false) }}
{{ Form::checkbox('display['.$acc->id.']', true,$acc->published ? true : false) }}
@endforeach
答案 3 :(得分:0)
尝试一下:
Request::macro('checkbox', function ($key, $checked = 1, $notChecked = 0) {
return $this->input($key) ? $checked : $notChecked;
});
并像这样使用它:
$model->property = $request->checkbox('input_name');
或
$model->property = $request->checkbox('input_name', 'yes', 'no');
取决于您需要存储的值。您不需要进行验证,只需要检查是否已接收到参数即可。
我不得不处理相同的问题,并且我尝试了许多方法,但我发现这是最优雅的方法。
答案 4 :(得分:-2)
只需添加隐藏的输入字段即可。
<input type="hidden" name="account[{{$acc->id }}]" value="0" >