我试图得到如果复选框被选中:
在我看来:
<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>
In my controller:
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')
但是由于某些原因不能工作。
我该怎么办?
谢谢你的回复。
EDIT:
你可以这样测试:
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') ){
//...
}
}
https://laravel.com/docs/5.0/requests 我相信你真正的问题是你有两个独立的表单。复选框在一个表单中,提交按钮在另一个表单中。我认为它们必须是相同的形式。否则,无论复选框的状态如何,都不会返回。
在您的视图中,尝试用以下内容替换您提供的表单标记:
<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>
复选框发送信息只有当它被选中,所以你要做的是,你检查,如果值是存在的。如果对Request $request
使用方法,比使用直接输入更容易:
if (isset($request->test)) {
// checked
}
Laravel docs: https://laravel.com/docs/5.0/requests
我创建了一个类,并将这个方法放入其中:
//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对象中获取数组并插入缺失的键(复选框的名称)。
您可以像下面这样在复选框中检查值。
if ($request->checkbox_name) {
// Do something
}
你可以使用
$request->test ? $request->test : 'false';