Передача дополнительного сообщения об ошибке в пакет ошибок проверки при авторизации

Я использую RegisterController, который поставляется по умолчанию в Laravel. В нем есть валидатор по умолчанию, однако я хочу вернуть дополнительное сообщение внутри него, чтобы я мог знать, в какой форме он повторно открывал связанный модал.

protected function validator(array $data)
{
$validator =  Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);

$messages = $validator->errors();
$messages->add('registerError', 'Custom Message');

return $validator;
}

Я пытался это, однако, не мог понять, как вернуть $messages, как есть validate() Функция сразу после этого вернула результат проверки:

$this->validator($request->all())->validate();

Какой правильный способ отправки 'registerError' к представлению вместе с другими ошибками валидатора?

0

Решение

Если у вас есть несколько форм на одной странице, вы можете использовать именованные пакеты ошибок. Посмотри Вот.

В вашем RegisterController замени это

public function register(Request $request)
{
$validator = $this->validator($request->all());

// rest of the register method code here...
}

С этим:

public function register(Request $request)
{
$validator = $this->validator($request->all());

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

// rest of the register method code here...
}

Тогда вы можете поймать это на ваш взгляд так:

@if ($errors->register->any())
// open the modal
@endif
1

Другие решения

Ниже я внес несколько изменений в ваш код о том, как правильно добавлять и возвращать ошибки с вашим экземпляром валидатора.

protected function validator(array $data)
{
$validator =  Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);

return $validator;

}

Тогда в вашем методе контроллера

   $validator = $this->validator($this->request->all());

if($validator->fails()){

$validator->errors()->add('registerError', 'Custom Message');

return View::make('myview')->withErrors($validator);

} else {
// Do something else you want to do
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector