我的表单中有多个选择:
<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
,当用户不选择任何项目时,规则无效。
答案 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'