将 Laravel 验证错误作为 JSON 响应返回

kaj*_*oop 3 php validation laravel

在我的RegisterControllerLaravel 中,我无法将错误返回到前端。我们的应用程序是作为 REST API 构建的,因此新用户的注册是通过 AJAX 发布到注册路由进行的。如果验证通过,则效果很好,但如果验证失败,则不会显示任何错误。它只是重定向到 Laravel 主页。我们没有使用 Blade 作为前端,因此不可能从 Blade 获取默认验证错误。前端是一个ReactJS客户端,通过AJAX调用与后端进行通信。

如何获取包含未通过验证的字段的 JSON 回前端?

protected function validator(array $data)
{
    return Validator::make($data, [
        'first_name' => 'required|string|max:255',
        'last_name'  => 'required|string|max:255',
        'email'      => 'required|string|email|max:255|unique:users',
        'password'   => 'required|string|min:6|confirmed',
        'birth_year' => 'required|integer|min:4',
        'lat'        => 'required|numeric',
        'lon'        => 'required|numeric',
    ]);        
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以通过将错误返回为 json 响应来解决它

$validator = Validator::make($data, [
    'first_name' => 'required|string|max:255',
    'last_name'  => 'required|string|max:255',
    'email'      => 'required|string|email|max:255|unique:users',
    'password'   => 'required|string|min:6|confirmed',
    'birth_year' => 'required|integer|min:4',
    'lat'        => 'required|numeric',
    'lon'        => 'required|numeric',
]);        

if ($validator->fails()) {    
  return response()->json($validator->messages(), 200);
}
Run Code Online (Sandbox Code Playgroud)