我在Laravel中有一个带有几个复选框的编辑表单。当我检查框并更新记录时,它可以正常工作,但是如果我取消选中该框,则它不会返回任何值,因此记录不会更新,并且数值在数据库中保持为真。
如何在Laravel中处理未选中的复选框?
答案 0 :(得分:8)
尝试一下
<input type="hidden" name="param" value="0">
<input type="checkbox" name="param" value="1">
如果选中了复选框=>服务器获得“ 1”
否则=>服务器获取“ 0”
答案 1 :(得分:5)
在复选框之前放置一个隐藏文本框,其值为,然后将0值发送到POST数组。
{{Form::hidden('value',0)}}
{{Form::checkbox('value')}}
答案 2 :(得分:3)
来自mozilla documentation on checkbox:
如果在提交表单时取消选中复选框,则没有提交给服务器的值来表示其未检查状态(例如value = unchecked);该值根本没有提交给服务器。
所以,以下将解决这个问题:
$isChecked = $request->has('checkbox-name');
答案 3 :(得分:0)
在HTML表单中,当您选中复选框时,它会通过POST到达
并且你没有检查它......所以它在POST中根本不存在。
所以你需要检查它是否存在......
if($request->has('input-name')) {
$value = $request->input('input-name')
}
else {
$value = "put default value (false)";
}
....
do your stuff with the value
答案 4 :(得分:0)
我能想到的最好方法是使用三元和空合并的PHP运算符:
$request->checkbox ? 1 : 0 ?? 0;
如果选中,它将返回1
,如果未选中或不可用,则返回0
。
答案 5 :(得分:0)
简单做
$somestate = 0;
if (isset($request -> checkox)) {
$somestate = 1;
}