如何在Laravel中验证多重选择

如何在Laravel中验证多重选择,laravel,validation,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"&

我的表格中有多选:

<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>

但是因为我在select中有
占位符
,当用户不选择任何项目时,规则无效。

不要使用占位符进行选择。而是在第一个索引处将一个没有值的选项推入数组,如下所示:

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

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

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'
'some_array' => 'array|min_array_size:2'