Laravel每次都会返回所有复选框的值

时间:2014-05-22 12:20:21

标签: php checkbox laravel

我有一个表单中的清单,从用户那里收集一些信息。我正在尝试获取用户选择的复选框的值。

这是路线

Route::get('addoption', array('as' => 'getaddoption', 'uses' => 'CategoryController@getAddOption'));
Route::post('addoption', array('as' => 'postaddoption', 'uses' => 'CategoryController@postAddOption'));

这是控制器部分

public function getCategoryForm(){

    //$this->option is a model interface which deals with table named 'options' having one column 'option'

    $existing_options = $this->option->lists('option');
    return View::make('dashboard.addcategoryform')->with('existing_options', $existing_options);
}

以下是处理复选框

的表单的部分(在dashboard.addcategory视图中)
@foreach($existing_options as $existing_option)
    {{Form::label($existing_option, $existing_option)}}
    {{Form::checkbox($existing_option, $existing_option)}}
@endforeach

因此创建了复选框。现在我想知道用户选择的复选框的值。

我正在通过postAddOption方法处理此表单

if($validator->passes()){
    $existing_option = $this->option->lists('option');          

    foreach($existing_option as $existing_opt){
            if(Input::get($existing_opt) == true){
                $selected_option[] = $existing_opt;
        }
    }

    print_r($selected_option);
}

但它给了我所有复选框的数组。

1 个答案:

答案 0 :(得分:0)

您的所有复选框都应具有相同的名称,并附加[]

@foreach($existing_options as $existing_option)
    {{ Form::checkbox('options[]', $existing_option) }}
@endforeach

现在,当您提交时,它将作为一个数组提交,该数组将填充相应的已选中复选框值的每个值,因此您无需循环访问它们。

if($validator->passes()){
    dd(Input::get('options'));
}