在 auth 上将附加错误消息传递给验证错误包
Posted
技术标签:
【中文标题】在 auth 上将附加错误消息传递给验证错误包【英文标题】:Passing additional error message to validation error bag on auth 【发布时间】:2017-07-10 03:49:02 【问题描述】:我正在使用 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'
与其他验证器错误一起发送到视图的正确方法是什么?
【问题讨论】:
【参考方案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
【讨论】:
谢谢。使用这种方法,我无法在刀片中使用$errors->has('register')
捕获它。实现它的正确方法是什么?
更新了答案。立即尝试。
谢谢。我让它为寄存器工作。但是,现在由于某种原因我无法得到其余的。我现在应该如何访问默认错误?例如,$errors->has('username')
现在不起作用。我现在如何访问用户名?
查看我在答案中链接到的文档。【参考方案2】:
我在下面对您的代码进行了一些更改,关于如何使用您的验证器实例正确添加和返回错误
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
【讨论】:
以上是关于在 auth 上将附加错误消息传递给验证错误包的主要内容,如果未能解决你的问题,请参考以下文章