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