将其他错误消息传递给身份验证上的验证错误包

时间:2017-02-20 18:25:35

标签: php laravel validation authentication

我正在使用Laravel中默认提供的RegisterController。它中有一个默认验证器,但是,我想在其中返回其他消息,以便我可以知道重新打开关联模式的形式。

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'与其他验证程序错误一起发送到视图的正确方法是什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 
   }