我有一个表单中的清单,从用户那里收集一些信息。我正在尝试获取用户选择的复选框的值。
这是路线
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);
}
但它给了我所有复选框的数组。
答案 0 :(得分:0)
您的所有复选框都应具有相同的名称,并附加[]
。
@foreach($existing_options as $existing_option)
{{ Form::checkbox('options[]', $existing_option) }}
@endforeach
现在,当您提交时,它将作为一个数组提交,该数组将填充相应的已选中复选框值的每个值,因此您无需循环访问它们。
if($validator->passes()){
dd(Input::get('options'));
}