我正在尝试查看我的控制器中是否选中了复选框。我读到这是代码做它
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
}
或者。。诸如此类的事情。我有点马虎,但我希望它能帮助到别人。