多选不传递输入中的所有值

时间:2018-10-22 14:35:32

标签: laravel forms input eloquent

我创建了一个包含多个输入的表单,除了以下内容外,其他所有输入的行为都很好:

{!! 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" => "4",而不是我期望的某种数组。例如"options" => ["1", "2", "3", "4"]

我在这里错过了什么吗?所有“选项”值均已选中,因此我看不到为什么它只是传递给控制器​​的最后一个。

1 个答案:

答案 0 :(得分:1)

更新输入名称以包括数组语法将使应用程序知道传递整个数组,而不仅仅是上一个选择的选项。

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