ajax请求验证器验证失败后,会返回一个422状态的错误,我用ajax是没有捕捉到。
然后从百度找啦一个方法吧错误信息获取到,自己生成一个json返回给浏览器。
/** * @param $data 验证的数据 * @param $rules 验证的规则 * @param $messages 自定义的错误信息 * @return mixed 验证失败返回对应的错误信息,验证成功无返回值。 */ protected function AjaxValidator($data,$rules, $messages){ $validator = \Validator::make($data, $rules, $messages); if ($validator->fails()) { //将返回错误循环组装成字符串 $arr = []; foreach ($validator->getMessageBag()->toArray() as $k=>$error){ array_push($arr, $error[0]); } $str = implode(' ', $arr); return \Response::json([ 'success' => false, 'errors' => $str ]); } } $rules =[ 'username' => 'required|max:24', 'password' => 'required|min:6', 'captcha' => 'required|captcha' ]; $messages = [ 'username.required' => '用户名必填', 'username.max' => '用户名长度必须小于24', 'password.required' => '密码必填', 'password.min' => '密码长度必须大于6', 'captcha.captcha' => '验证码不正确', ]; $validator = $this->AjaxValidator($request->all(),$rules ,$messages);
最终错误的信息返回: