无法在注册表中进行多次选择

时间:2018-06-24 08:55:31

标签: laravel select many-to-many user-input

我使用基本注册表格,但我想添加多项选择,一个用户可以具有多种技能,并在注册时选择它们。 我的问题是,当我选择倍数值时Laravel只取最后一个值,因此我在网上搜索了一个解决方案,他们说要在班级名称后添加[],所以我要这样做:

 <div class="form-group row">
                        <div class="col-md-6">
                            <?php $competences = \App\Competence::all(); ?>
                            <select name="competences[]" multiple="" class="form-control">
                                <option value="" selected disabled style="display:none">choose your school</option>
                                @foreach ($competences as $competence)
                                    <option value="{{ $competence->id }}">{{ $competence->name }}</option>
                                @endforeach
                            </select>
                        </div>
                    </div>

但是,现在,当我提交表单时,页面会重新加载并保留在注册表单中,而用户没有注册...我不知道该怎么办,你们中有谁有解决方案?

这是我在registerController中检查能力的方法

 $competences =  $data['competences'];
    foreach ($competences as $comp){
        $user->competences()->save(Competence::find($comp));
    }

1 个答案:

答案 0 :(得分:0)

在Blade.php中使用multiple="multiple"或仅使用multiple

<div class="form-group row">
    <div class="col-md-6">
        <?php $competences = \App\Competence::all(); ?>
        <select name="competences[]" class="form-control" multiple>
            <option value="" selected disabled style="display:none">choose your school</option>
            @foreach ($competences as $competence)
            <option value="{{ $competence->id }}">{{ $competence->name }}</option>
            @endforeach
        </select>
    </div>
</div>

然后在您的控制器中,通过仅打印$data

来验证您实际上是在以数组形式获取数据
return $data;