2017-02-20 16 views
0

Я использую 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' в вид вместе с другими ошибками проверки достоверности?

ответ

1

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

в вашем 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 
+0

Спасибо. Используя этот подход, я не мог поймать его, используя '$ errors-> has ('register')' в моем клиенте. Каков правильный способ его достижения? – senty

+0

Обновлен ответ. Попробуй это сейчас. – PawelMysior

+0

Спасибо. Я сделал это для регистрации. Однако теперь я не мог получить остальное по какой-то причине. Как мне теперь получить доступ к ошибкам по умолчанию? Например, '$ errors-> имеет ('username')', например, не работает. Как я могу получить доступ к имени пользователя сейчас? – senty

0

Я сделал некоторые несколько изменения вашего кода ниже, о том, как правильно добавлять и возвращать ошибки с помощью экземпляра валидатора

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 
    }