验证后避免 Laravel 重定向

Car*_*lly 5 php validation ajax form-data laravel

我正在我的 Laravel 控制器上做一个简单的验证:

public function updateInfo(Request $request) {

        $validator = $request->validate([
            "name" => ["string", "nullable"],
            "email" => ["email", "nullable"],
            "currentPassword" => ["password:api"]
        ]);

        return json_encode($validator);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果失败,此验证会将我重定向到主页,并且我正在通过 AJAX 发出请求,我知道 Laravel 检测到请求何时通过 Ajax,但它仅在正常请求时才有效(在我Content Type application/json在正文中发送标头并在正文中发送了一个普通的 JSON

但是 Laravel 无法检测何时 te Ajax 请求不是Content Type application/json,我使用的FormData()是 JavaScript 对象,因此,我没有发送 header Content Type application/json,并且在正文中我发送了 FormData 对象。

我认为它模拟了重新加载页面的典型 HTTP 请求,因此 Laravel 无法检测到它,但它给我的 ajax 响应带来了麻烦,因为 Laravel 响应重定向,而在我的 Ajax 响应中,我正在捕获 HTML 代码的主页。

我能做什么?

mma*_*wad 2

您可以将validator()辅助函数与validate()方法一起使用,它将帮助您进行 AJAX 调用和普通调用

validator($request->all(), [
    "name" => ["string", "nullable"],
    "email" => ["email", "nullable"],
    "currentPassword" => ["password:api"]
])->validate();
Run Code Online (Sandbox Code Playgroud)