如何测试控制器中的复选框是否被选中


Laravel how to test if a checkbox is checked in a controller

我试图得到如果复选框被选中:

在我看来:

<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';