【问题标题】:Laravel Form with multiple select具有多项选择的 Laravel 表单
【发布时间】:2017-11-27 05:16:21
【问题描述】:

我有以下控制器,它将数据发送到 Laravel Blade 视图:

控制器:

public function create()
{
    $schools = School::all()->sortBy('school_type');
    return view('invoices.create')->with([
        'schools' => $schools,
        'dayTypes' => $dayTypes,
    ]);
}

在那个 Laravel 刀片视图中有一个表单:

<form method="GET" action="{{ route('invoices.choose-periods') }}">
    <div class="form-group {{ $errors->has('school') ? 'has-error' : '' }}">
        <label>School</label>
        <select id="school" class="form-control" name="school[]" multiple size="{{ $schools->count() }}" required>
            @foreach ($schools as $school)
                <option value="{{ $school->id }}">{{ $school->name }}</option>
            @endforeach
        </select>
        @if ($errors->has('school'))
            <span class="help-block">
                <strong>{{ $errors->first('school') }}</strong>
            </span>
        @endif
    </div>
        <button type="submit" class="btn btn-success btn-sm pull-right">Submit</button>
</form>

从 HTML 中可以看出,表单是一个多选表单,结果数据存储在 school[] 数组中。

在提交表单时,我在request('school') 上进行了测试和转储,发现对于我选择的每个选项,该值似乎已被记录两次。例如,只选择一个选项会给我:

array:2 [▼
  0 => "15"
  1 => "15"
]

有什么想法吗?谢谢!

【问题讨论】:

  • 问题似乎与您的刀片模板无关
  • 我同意。莫名其妙……
  • 您确定您的视图中有单个选择器吗?其他看起来还不错
  • 对不起,事件 x 我的意思是如何通过单击多选中的项目来存储数据。 route('invoices.choose-periods') 有什么特别的事情吗?还要检查你的刀片是否包含 name="school[]" 两次。
  • Offtopic:如果可能的话,建议使用 Laravel Collective laravelcollective.com/docs/5.4/html。生成此表单时,您可能没有 _token,这可能会导致将来出现安全问题。

标签: php laravel


【解决方案1】:

我只在 laravel 5.7 上工作过。试试这个它对我有用。 由于您要传递 2 个对象

return view('invoices.create')->with([
    'schools' => $schools,
    'dayTypes' => $dayTypes,
]);

很明显你会得到 2 个错误。

在你的控制器中改变这个

public function create()
{
$schools = School::all()->sortBy('school_type');
return view('invoices.create')->with([
    'schools' => $schools,
    'dayTypes' => $dayTypes,
]);
}

到这里

public function create(){
$schools = School::all()->sortBy('school_type');
return view('invoices.create', ['schools' => $schools]),
]);
 }

【讨论】:

  • 干杯。感谢您的帮助。
  • 还没来得及检查抱歉!
猜你喜欢
  • 1970-01-01
  • 2017-01-27
  • 2021-07-25
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2012-12-17
相关资源
最近更新 更多