Прикрепление ошибки к валидатору в laravel 5
Я использую 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();
}
Я хочу сохранить ошибки Ларавеля Validator
сделай сам и прикрепи к ним других (если нужно). Так, например, если не было ничего плохого в name
вход, но мой if
В заявлении обнаружена ошибка, Validator
потерпит неудачу
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();
}
Я бы рекомендовал сделать эту логику после того, как вы проверите, провалилась ли проверка формы, потому что просто добавляете сообщение в MessageBag
не установит вашу проверку как неудачную. Затем вы можете вручную вернуть перенаправление после того, как одна или несколько из этих проверок были выполнены, чтобы перенаправить на форму с ошибками и вводом.
Попробуйте эту проверку
$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);