Прикрепление ошибки к валидатору в 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 свойство вашей формы, добавив его в ValidatorMessageBag,

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);
Другие вопросы по тегам