如何在Laravel中处理未选中的复选框?

时间:2018-02-15 05:48:15

标签: laravel checkbox

我在Laravel中有一个带有几个复选框的编辑表单。当我检查框并更新记录时,它可以正常工作,但是如果我取消选中该框,则它不会返回任何值,因此记录不会更新,并且数值在数据库中保持为真。

如何在Laravel中处理未选中的复选框?

6 个答案:

答案 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;

}