【问题标题】:Laravel 4 - get data from multiselect formLaravel 4 - 从多选表单中获取数据
【发布时间】:2014-09-11 00:17:55
【问题描述】:

我正在使用 Laravel 4,并且我有两个与“多对多”相关的表:“Actividad”和“Material”。每个 Actividad 都可以有一个或多个 Material,每个 Material 都可以属于一个或多个 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);

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

字符串(1)“1”

这是我第一次以这种方式处理相关表,可能我做错了什么(在表单中、在我的控制器中、在我的模型中……)

非常感谢您的帮助!!

【问题讨论】:

  • 您需要传递materials[] 数组而不是单个material_id。您传递给表单选择的$material_id 是什么?
  • 谢谢 dczo,你正要通过数组! ;)

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


【解决方案1】:

如果您在客户端使用自定义响应处理程序,例如在使用 AJAX 提交信息的情况下,您需要做的就是简单地将“[]”添加到选择控件的名称中。

例如

<select name="material_id[]" multiple>

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

【讨论】:

    【解决方案2】:

    只需将您的代码更改为此

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-26
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 2016-06-24
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多