Laravel 4 - 从多选表单中获取数据

时间:2014-07-20 09:20:40

标签: forms laravel-4 many-to-many eloquent multi-select

我正在使用Laravel 4,我有两个与'多对多'相关的表:'Actividad'和'Material'。每个Actividad都可以有一个或多个材质,每个材质都可以属于一个或多个Actividad。

所以,我已经创建了一个表单来创建一个新的Actividad,您可以在其中保存一个或多个材料。我用多选输入完成了这个。像那样:

{{ Form::label('material_id', 'Material necesario:') }}
<p>{{ Form::select('material_id', $material_id, Input::old('material_id'), array('multiple')) }}</p>

我不知道我是否做得正确,但在保存之前,我的第一个问题是我只获得了一个结果。我想我应该在表单中“检查”每个选项......我的控制器的相关部分是:

$material = Input::get('material_id');

return var_dump($material);

我应该获得一个选定的选项列表,但我在浏览器中的结果是:

  

string(1)“1”

这是我第一次使用这种方式处理相关表格,可能我做错了(在表单中,在我的控制器中,在我的模型中......)

非常感谢你的帮助!!

2 个答案:

答案 0 :(得分:0)

只需将您的代码更改为此

即可
{{ Form::select('material_id[]', $material_id, Input::old('material_id'), array('multiple')) }}

我希望这会有所帮助。

答案 1 :(得分:0)

如果您在客户端使用自定义响应处理程序,例如在使用AJAX提交信息的情况下,您只需要在select控件的名称中添加“[]”。

e.g。

<select name="material_id[]" multiple>

这与普通PHP的情况相同。如果希望Laravel在呈现新响应/视图时为您处理表单元素,则需要其他方法。 (页面重新加载)。 REST请求不会发生此重新加载。