验证 POST 请求 Laravel?

Validate POST request Laravel?

我验证 POST 请求如下:

$validator = Validator::make($request->all(), [
            "id.*" => 'required|integer'
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors, 400);
        }

        echo "Ok";

当我发送不带参数的请求时 id 它会跳过验证和 returns echo "Ok";.

为什么验证不起作用?

如果您希望 id 是整数数组,您应该像这样更新验证规则:

$validator = Validator::make($request->all(), [
            "id" => 'required|array',
            "id.*" => 'integer'
        ]);

首先知道什么时候使用$request->validate();当它失败时会引发异常! 它们由 laravel 自动处理。如果是 get 普通 post 表单, 那么 进程将重定向回表单

请注意,在 AJAX 请求期间使用验证方法时,Laravel 不会生成重定向响应。 相反,Laravel 生成包含所有验证错误的 JSON 响应。此 JSON 响应将与 422 HTTP 状态代码一起发送。

如果你不想有这样的自动行为,cr手动吃一个验证器,然后你可以检查 ->fails() 方法,如下图所示。在很多情况下,这可能很少。

<?php 
public function store(Request $request)

        {
            $validator = Validator::make($request->all(), [
                'title' => 'required|unique:posts|max:255',
                'body' => 'required',
            ]);

            if ($validator->fails()) {
                return redirect('post/create')
                            ->withErrors($validator)
                            ->withInput();
            }

            // Store the blog post...
        }
    }

没有比文档本身更好的了:https://laravel.com/docs/5.7/validation 有很多选项可以个性化我们的验证过程。