【问题标题】:Multi-Select not passing all values from input多选不传递输入中的所有值
【发布时间】:2019-03-26 16:16:10
【问题描述】:

我创建了一个包含多个输入的表单,除了以下内容之外,它们都表现良好:

{!! Form::open(['route' => ['changes.store'], 'class' => "was-validated"]) !!}

<div class="form-group">
  <div class="row">
    <div class="col-md-6 pt-3 bg-light">
      <label for="options">Options:</label>     
      <select id="options" name="options" class="form-control" multiple>
        @foreach ($options as $option)
          <option value="{{ $option->id }}" selected>{{ $option->name }}</option>
        @endforeach
      </select >
    </div>
  </div>
</div>


<div class="row">
  <input type="hidden" name="_token" value="{{ csrf_token() }}">
  <input type="submit" class="btn btn-success" type="button">
</div>  

{!! Form::close() !!}

选项只是从我的模型发送到视图的值的集合

$options = Option::all();

如果我检查它,表格看起来是正确的,但是当我检查时

dd($request->all);

我将最后一个值作为字符串,例如"options" =&gt; "4",而不是我期望的某种数组。比如"options" =&gt; ["1", "2", "3", "4"]

我在这里遗漏了什么吗?所有的“选项”值都被选中,所以我不明白为什么它只是传递给控制器​​的最后一个。

【问题讨论】:

  • 我相信将变量名称更改为 name="options[]" 应该可以解决此问题。
  • 成功了!谢谢。如果您想提交作为答案,我会接受。

标签: laravel forms input eloquent


【解决方案1】:

更新输入的名称以包含数组语法将使应用程序知道传递完整的数组,而不仅仅是最后选择的选项是什么。

<select id="options" name="options[]" class="form-control" multiple>
    ...
</select >

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2018-12-09
    相关资源
    最近更新 更多