我正在使用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”
这是我第一次使用这种方式处理相关表格,可能我做错了(在表单中,在我的控制器中,在我的模型中......)
非常感谢你的帮助!!
答案 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请求不会发生此重新加载。