Laravel 4,如何测试Checkbox是否被选中?

时间:2013-11-23 22:36:01

标签: php checkbox laravel laravel-4

我正在尝试查看是否在我的控制器中选中了复选框。我已经读过这是执行此操作的代码

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

但即使取消选中该复选框,也会返回true。

4 个答案:

答案 0 :(得分:27)

使用Input::has('attending_lan')

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

还相关:Does <input type="checkbox" /> only post data if it's checked?

答案 1 :(得分:15)

假设您的视图中包含此表单代码:

// 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),然后在控制器中检查该值。

答案 2 :(得分:-1)

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

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

可能的返回值:

  • 为“1”,“true”,“on”和“yes”,和大写版本返回TRUE。
  • 为“0”,“false”,“off”和“no”,和大写版本返回FALSE。
  • 否则返回NULL。

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

答案 3 :(得分:-2)

另一种方法是检查数组键是否存在,假设未检查输入:: get('key')可能会给你带来问题,因为它在Input数组中有一个未定义的索引。

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

或者......类似的东西。我有点草率但我希望它可以帮助别人。