验证后避免 Laravel 重定向
Avoid Laravel redirect after validation
我正在对我的 Laravel 控制器进行简单验证:
public function updateInfo(Request $request) {
$validator = $request->validate([
"name" => ["string", "nullable"],
"email" => ["email", "nullable"],
"currentPassword" => ["password:api"]
]);
return json_encode($validator);
}
我的问题是,如果此验证失败,我会将我重定向到主页,我正在通过 AJAX 发出请求,我知道 Laravel 检测到请求何时通过 [=28] =],但它仅在正常请求时有效(典型的请求是我用 Content Type application/json
发送 header,而在 body 中我发送了正常的 JSON
但是 Laravel 无法检测到 Ajax 请求不是 Content Type application/json
,我正在使用 FormData()
object JavaScript,所以,我没有发送 header Content Type application/json
,而在 body 中我发送了 FormData object.
我认为它模拟了一个典型的 HTTP 请求重新加载页面,因此 Laravel 无法检测到它,但它给我带来了 ajax 响应的麻烦,因为 Laravel 响应重定向,在我的 Ajax 响应中,我正在捕获主页的 HTML 代码。
我能做什么?
您可以将 validator()
辅助函数与 validate()
方法一起使用,它将帮助您进行 AJAX 调用和正常调用
validator($request->all(), [
"name" => ["string", "nullable"],
"email" => ["email", "nullable"],
"currentPassword" => ["password:api"]
])->validate();
我正在对我的 Laravel 控制器进行简单验证:
public function updateInfo(Request $request) {
$validator = $request->validate([
"name" => ["string", "nullable"],
"email" => ["email", "nullable"],
"currentPassword" => ["password:api"]
]);
return json_encode($validator);
}
我的问题是,如果此验证失败,我会将我重定向到主页,我正在通过 AJAX 发出请求,我知道 Laravel 检测到请求何时通过 [=28] =],但它仅在正常请求时有效(典型的请求是我用 Content Type application/json
发送 header,而在 body 中我发送了正常的 JSON
但是 Laravel 无法检测到 Ajax 请求不是 Content Type application/json
,我正在使用 FormData()
object JavaScript,所以,我没有发送 header Content Type application/json
,而在 body 中我发送了 FormData object.
我认为它模拟了一个典型的 HTTP 请求重新加载页面,因此 Laravel 无法检测到它,但它给我带来了 ajax 响应的麻烦,因为 Laravel 响应重定向,在我的 Ajax 响应中,我正在捕获主页的 HTML 代码。
我能做什么?
您可以将 validator()
辅助函数与 validate()
方法一起使用,它将帮助您进行 AJAX 调用和正常调用
validator($request->all(), [
"name" => ["string", "nullable"],
"email" => ["email", "nullable"],
"currentPassword" => ["password:api"]
])->validate();