我正在尝试查看是否在我的控制器中选中了复选框。我已经读过这是执行此操作的代码
if (Input::get('attending_lan', true))
但即使取消选中该复选框,也会返回true。
答案 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过滤器将值验证为布尔选项。
可能的返回值:
答案 3 :(得分:-2)
另一种方法是检查数组键是否存在,假设未检查输入:: get('key')可能会给你带来问题,因为它在Input数组中有一个未定义的索引。
$input = Input::all();
if(array_key_exists($input('key',$input)){
// Checked
}else{
// Not Checked
}
或者......类似的东西。我有点草率但我希望它可以帮助别人。