如何在Laravel中验证多个选择

时间:2017-04-26 17:30:51

标签: laravel validation

我的表单中有多个选择:

<div class="col-sm-9">
  {!! Form::select('live_in[]', $cities, null, ['placeholder' => '-----', 'class' => 'form-control', 'multiple' => true]) !!}
  @if ($errors->has('live_in'))
    <span class="help-block m-b-none">{{$errors->first('live_in')}}</span>
  @endif
</div>

并且在Http/Requests/AddCityRequest.php我有这条规则:

public function rules()
    {
        return [
            'live_in' => 'required',
            ...
        ];
    }

但由于我选择了placeholder,当用户不选择任何项目时,规则无效。

2 个答案:

答案 0 :(得分:0)

不要为您的选择使用占位符。而是在没有值的情况下将选项推送到第一个索引处的数组中,如下所示:

<option value=""> -------- </option>

这不会将值发送到服务器,因此规则将失败。

答案 1 :(得分:0)

Laravel没有很多用于数组大小验证的验证器。这是一个自定义的:

$this->app['validator']->extend('min_array_size', function($attribute, $value, $parameters) {

        $data = $value;

        if( ! is_array($data)){
            return true;
        }
        return count($data) >= $parameters[0];
});

App\Providers\AppServiceProvider的启动方法中放入那些和平的代码

并使用它们尝试如下操作。

'some_array' => 'array|min_array_size:2'