验证后避免 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();