我可以覆盖验证请求中的某些属性来控制验证失败时会发生什么吗? (我不想在控制器中使用验证)
我有用户验证请求:
public function rules()
{
return [
'email' => 'required|email|max:255|unique:user',
'name' => 'required',
'password' => 'required|min:6',
'password_confirmation' => 'required|min:6|same:password'
];
}
当AJAX调用注册方法时,会发生这种情况:
public function postRegisterAjax(UserRegistrationValidationRequest $request)
{
...
return $this->responseJson($status, $msg);
}
我需要以某种方式更新$msg
,以便我可以通过JS动态返回验证错误消息。
编辑:我的最终解决方案(在我的自定义表单请求中)
public function failedValidation(Validator $validator)
{
if ($validator->fails()) {
$status = Status::ERROR;
throw new HttpResponseException(response()->json(["response" => [
'msg' => $validator->errors()->all(':message'),
'status' => $status
]]));
}
return response()->json(["response" => [
'msg' => 'User successfully registered',
'status' => Status::SUCCESS
]]);
}
答案 0 :(得分:1)
要返回验证错误消息:
在 Laravel表单请求验证中,如果验证失败,则在AJAX请求的情况下,将返回JSON响应。 JSON响应包含所有验证错误。您可以在ajax
错误响应中访问它们。
(转储您的错误回复,您可以在responseJSON
中看到它们。)
如果您想为error bag
添加其他逻辑/验证并附加错误,可以使用after-validation-hook。
希望它会帮助你..
<强>更新强>
您可以覆盖laravel form request
的响应方法,如下所示
public function response(array $errors)
{
return response()->json(['status' => $status, "response" => $errors]);
}
在您的回复中,您将能够以data.response
答案 1 :(得分:0)
更新:
public function postRegisterAjax(UserRegistrationValidationRequest $request)
{
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
$msg = $validator->errors();
return $this->responseJson($status, $msg);
}
}