在laravel 5中将错误附加到验证器

时间:2016-09-22 13:39:40

标签: php laravel validation laravel-5 laravel-validation

我使用Validator Facade,这里是代码

$req = Request::all();
$rules = [
    'name'=>'required|min:3|max:20'
];
$validator = Validator::make($req, $rules);

if(/*another problem*/){
    // ??
}      

if ($validator->fails()) {
    return redirect()->back()->withErrors($validator)->withInput();
}

我想保留Laravel Validator使其成为自我的错误,并将其他一些错误附加到他们身上(如果需要)。 例如,如果name输入没有任何问题,但我的if语句发现错误,则Validator将失败。

2 个答案:

答案 0 :(得分:2)

Validator MessageBag

您可以将邮件添加到name Validator,将邮件添加到表单的MessageBag属性。

if(/*another problem*/) {
    $validator->getMessageBag()->add('name', 'Something else does not check out!');

    return redirect()->back()->withErrors($validator)->withInput();
}

我建议在检查formvalidation是否失败后执行此逻辑,因为只是将消息添加到MessageBag不会将验证设置为失败。然后,您可以在完成一个或多个检查后手动返回重定向,以重定向到包含错误和输入的表单。

答案 1 :(得分:0)

尝试此验证

$messages = [
  'name.required' => 'Please enter name.',
  'naem.min' => 'The name must be at least 3 characters.',
  'name.max' => 'The name may not be greater than 20 characters.'
];

$validator = Validator::make($data, [
  'name'=>'required|min:3|max:20'
], $messages);