我试图通过以下方式检查复选框:
在我看来:
<form data-toggle="validator" data-disable="false" role="form" action="/admin/role/add" method="post">
<div class="checkbox checkbox-success">
<input name="test" id="test" type="checkbox" value="test">
<label for="test" style="padding-left: 15px!important;">test</label>
</div>
</form>
<form data-toggle="validator" data-disable="false" role="form" action="/admin/role/add" method="post">
{{ csrf_field() }}
<div class="form-group pull-right">
<button type="submit" class="btn btn-danger">Submit</button>
</div>
</form>
在我的控制器中:
public function createRole(Request $request)
{
if( $request->has('test')) {
new \App\Debug\Firephp('test', ['test' => true]);
}
}
web.php中的:
Route::post('/admin/role/add', 'AdminController@createRole')
但不起作用。
我该怎么做?
感谢您的回复。
编辑1:
这是我的表格构建不佳
答案 0 :(得分:5)
您可以使用以下方法进行测试:
if( Input::get('test', false) ) {
// there is something for 'test'
} else {
// there was no 'test' or it was false
}
或者
if( Request::input('test') ) { //...
或者
public function store(Request $request)
{
if( $request->has('test') ){
//...
}
}
答案 1 :(得分:5)
我相信你真正的问题是你有两种不同的形式。您的复选框采用一种形式,您的提交按钮采用第二种形式。我相信它们都需要采用相同的形式。否则,永远不会返回您的复选框状态,无论其状态如何。
在您看来,请尝试替换您提供的表单标记:
<form data-toggle="validator" data-disable="false" role="form" action="/admin/role/add" method="post">
<div class="checkbox checkbox-success">
<input name="test" id="test" type="checkbox" value="test">
<label for="test" style="padding-left: 15px!important;">test</label>
</div>
{{ csrf_field() }}
<div class="form-group pull-right">
<button type="submit" class="btn btn-danger">Submit</button>
</div>
</form>
答案 2 :(得分:3)
复选框在选中时会发送信息 ,所以您检查是否存在该值。如果您使用Request $request
方法而不是使用直接输入,则会更容易:
if (isset($request->test)) {
// checked
}
Laravel docs:https://laravel.com/docs/5.0/requests
答案 3 :(得分:0)
我上了一堂课并把这个方法放进去了:
//This function is used to insert missing index key when checkboxes are used
public static function checkboxHelper($request_array, $key)
{
if(!array_key_exists($key,$request_array)){
$request_array[$key]=0;
}
else{
$request_array[$key]=1;
}
return $request_array;
}
此方法从$ request对象获取数组并插入缺失键(复选框名称)。
答案 4 :(得分:0)
您可以检查复选框中的值,如下所示。
if ($request->checkbox_name) {
// Do something
}