Я использую 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'
к представлению вместе с другими ошибками валидатора?
Если у вас есть несколько форм на одной странице, вы можете использовать именованные пакеты ошибок. Посмотри Вот.
В вашем 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
Ниже я внес несколько изменений в ваш код о том, как правильно добавлять и возвращать ошибки с вашим экземпляром валидатора.
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
}