Laravel 4,如何测试复选框是不是被选中?

Posted

技术标签:

【中文标题】Laravel 4,如何测试复选框是不是被选中?【英文标题】:Laravel 4, how to test if a Checkbox is checked?Laravel 4,如何测试复选框是否被选中? 【发布时间】:2013-12-08 17:52:10 【问题描述】:

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

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

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

【问题讨论】:

Input::get('attending_lan', false) 可以工作,或者Input::get('attending_lan', '0') 【参考方案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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

使用Input::has('attending_lan')

一般来说,如果勾选了复选框,请求变量就会存在。如果不是这种情况,则说明代码中的其他地方有问题。

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

【讨论】:

这是最好的方法 这解决了我在登录时使用 Laravel remember_me 的问题。 完美解决方案【参考方案4】:

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

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

【讨论】:

还需要注意的是,如果不勾选attaching_lan,是不会报错的。这与标准 PHP 不同,在标准 PHP 中,如果您查询未检查的参加局域网,您会得到未找到的变量。

以上是关于Laravel 4,如何测试复选框是不是被选中?的主要内容,如果未能解决你的问题,请参考以下文章

如何验证是不是在laravel中选中了复选框?

如何检查复选框是不是被选中?

如何检查复选框是不是被选中?

在继续之前如何验证复选框是不是被选中?

如何为每个复选标记保存复选框并增加整数?

如何使用 Selenium Webdriver 验证复选框是不是被选中?