【发布时间】:2019-08-25 14:21:57
【问题描述】:
我正在构建我的第一个 React JS 系统并使用 Laravel Passport 进行身份验证。在我尝试提交无效数据之前,它一直运行良好。当我发送我的发布请求时,我设置了以下请求类:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RegisterUser extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|confirmed|min:8'
];
}
}
这是从以下 React JS 方法中看到的 /api/register 端点触发的:
registrationHandler = e => {
e.preventDefault();
$("#email-login-btn")
.attr("disabled", "disabled")
.html(
'<i class="fas fa-spinner fa-spin fa-1x fa-fw"></i><span class="sr-only">Loading...</span>'
);
var formData = new FormData();
formData.append("email", e.target.elements.email.value);
formData.append("name", e.target.elements.name.value);
formData.append("password", e.target.elements.password.value);
formData.append(
"password_confirmation",
e.target.elements.password_confirmation.value
);
axios
.post("/api/register", formData)
.then(response => {
return response;
})
.then(json => {
if (json.status == 201) {
const MySwal = withReactContent(
Swal.mixin({
toast: true,
position: "top-end",
showConfirmButton: false,
timer: 3000
})
);
MySwal.fire({
type: "success",
title: "Registered successfully"
});
} else {
$("#email-login-btn")
.removeAttr("disabled")
.html("Register");
}
})
.catch(error => {
console.log(error.response.data.errors);
$("#email-login-btn")
.removeAttr("disabled")
.html("Register");
});
};
您可以在底部看到我正在尝试捕获错误并使用console.log(error.response.data.errors); 将它们记录到控制台 - 这很好,我可以在控制台中看到它们,如下所示:
我的控制器方法是这样的,没什么疯狂的:
{
// If validation hasn't failed, register the user
User::create([
'name' => request('name'),
'email' => request('email'),
'password' => bcrypt(request('password'))
]);
return response()->json(['status' => 201]);
}
但我现在要做的是在我的表单下的注册页面上显示错误。我尝试在状态内设置错误(我正在执行控制台日志),然后将它们作为道具传递给我的Register.js 文件,但它总是返回“未定义”,大概是因为路由没有改变。
有没有更好的方法来显示系统发回的错误?我目前对此有点茫然。
谢谢!
【问题讨论】:
标签: javascript reactjs laravel-passport laravel-5.8