在Laravel的RegisterController
中,我无法将错误返回到我的前端。我们的应用程序是作为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',
]);
}
答案 0 :(得分:1)
您的代码很好,您可以捕获错误,因为laravel将自动返回具有422 HTTP状态的JSON响应。
所以基本上在你的ajax中使用了错误函数,如果验证器失败,ajax会自动执行你在ajax错误中的代码。
有关如何正确处理ajax错误的更多信息,请查看此问题。 Displaying validation errors in Laravel 5 with React.js and AJAX
答案 1 :(得分:1)
你可以通过将错误返回为json respone来解决它
$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);
}
答案 2 :(得分:0)
我通过禁用“访客”解决了这个问题。 RegisterController
中的中间件。我不确定这是否是一个可靠的解决方案,但现在它可行。