Laravel 4,如何测试是否选中复选框


Laravel 4, how to test if a Checkbox is checked?

我正在尝试查看我的控制器中是否选中了复选框。我读到这是代码做它

if (Input::get('attending_lan', true))

但即使复选框未选中,也会返回true。

使用Input::has('attending_lan')

一般来说,如果复选框被选中,那么请求变量就会存在。如果不是这样的话,代码中的其他地方就会出现问题。

也相关:Do<输入类型=";复选框"/>仅当';检查了吗?

假设您的视图中有以下表单代码:

// view.blade.php
{{ Form::open() }}
    {{ Form::checkbox('attending_lan', 'yes') }}
    {{ Form::submit('Send') }}
{{ Form::close() }}

您可以获得如下复选框的值:

if (Input::get('attending_lan') === 'yes') {
    // checked
} else {
    // unchecked
}

这里的关键是,在视图中创建复选框时必须设置一个值(在本例中,值为yes),然后在控制器中检查该值。

if(filter_var(Input::get('attending_lan'), FILTER_VALIDATE_BOOLEAN)){

FILTER_VALIDATE_BOOLEAN过滤器将值验证为布尔选项

可能的返回值:

  • 对于"1"、"TRUE"、"on"answers"yes"、以及大写版本,返回TRUE
  • 对于"0"、"FALSE"、"off"answers"no"、以及大写版本,返回FALSE
  • 否则返回NULL

来源:http://www.w3schools.com/php/filter_validate_boolean.asp

另一种选择是检查数组键,看看它是否存在,因为如果不检查Input::get('key'),它在Input数组中有一个未定义的索引,它可能会给您带来问题。

$input = Input::all();
if(array_key_exists($input('key',$input)){
// Checked
}else{
// Not Checked
}

或者。。诸如此类的事情。我有点马虎,但我希望它能帮助到别人。