Laravel多次选择数组验证始终会给出错误

时间:2019-01-11 22:44:06

标签: laravel laravel-5

我在表单中使用多个选择,面临表单验证问题,如果我为校验规则提供了相同的名称,则我将多个选择字段名称用作数组,但其工作效果很好,但在选择的选项上也不断给出校验错误。这是我的html代码和验证规则。

<select multiple="multiple" name="skills[]" class="form-control">

验证规则

'skills[]' => 'required'

如果我使用的字段名称没有[]或技能。*验证不适用于该字段,请指导我做错了什么。我正在为项目使用laravel 5.7。

1 个答案:

答案 0 :(得分:1)

例如,如果您的select如下所示:

<div class="form-group row">
    <label for="skills" class="col-md-4 col-form-label text-md-right">Skills</label>
    <div class="col-md-6">
        <select multiple name="skills[]" id="skills" class="form-control{{ $errors->has('skills') ? ' is-invalid' : '' }}" required>
            <option value="ios">iOS</option>
            <option value="php">PHP</option>
            <option value="laravel">Laravel</option>
        </select>
        @if($errors->has('skills'))
            <span class="invalid-feedback" role="alert">
                <strong>{{ $errors->first('skills') }}</strong>
            </span>
        @endif
    </div>
</div>

创建自定义请求:

$ php artisan make:request ExampleRequest

ExampleRequest验证如下:

public function authorize()
{
    return true;
}

public function rules()
{
    return [
        'skills' => 'required|array',
    ];
}

然后直接从您的$request中获取经过验证的数据

public function submitForm(ExampleRequest $request)
{
    // at this point, validation already passed
    // if validation failed, you would be back at form with errors
    $skills = request('skills');
    // or
    $skills = $request->skills;

    dd($skills);
}

自定义请求首先得到验证,甚至没有达到您的控制器方法。