【发布时间】:2015-11-07 20:12:38
【问题描述】:
我正在使用表单请求类。工作正常:
class EventFormRequest extends FormRequest
{
public function rules()
{
return [
'event' => 'required|min:10|max:255',
'event_description' => 'required|min:3|max:255',
'url' => 'url',
'date' => 'required|date',
'start_time' => 'required',
'location.street' => 'required|max:255',
'location.house_number' => 'required|min:1|max:5',
'location.place' => 'required|max:255'
];
}
}
但是现在,我必须添加更复杂的规则,例如与 Validator 结合使用。在我的 EventFormRequest 类的新 rules() 方法下面:
public function rules()
{
$v = \Validator::make($this->request->all(),
[
'event' => 'required|min:10|max:255',
'event_description' => 'required|min:3|max:255',
'url' => 'url',
'date' => 'required|date',
'start_time' => 'required',
'location.street' => 'required|max:255',
'location.house_number' => 'required|min:1|max:5',
'location.place' => 'required|max:255'
]);
$v->sometimes('category_id', 'required|numeric', function($input) {
return $input->event_type == 'known';
});
return ($v->fails() ? $v->messages() : []); // validator validates the rules, but returns the messages
}
您会看到,如果事件类型为“已知”,则 category_id 是必需的。在表单请求规则()方法中,我无法从验证器返回应用的规则作为数组(参见示例 1),而只能返回消息()。
我的灵感来自这里:http://laravel.com/docs/5.1/validation#conditionally-adding-rules
【问题讨论】:
标签: php validation laravel-5