验证POST请求Laravel?

时间:2017-10-11 19:45:07

标签: laravel laravel-5.3 laravel-5.4 laravel-validation laravel-5.5

我验证POST请求,如:

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

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

        echo "Ok";

当我发送没有参数id的请求时,它会跳过验证并返回echo "Ok";

为什么验证不起作用?

2 个答案:

答案 0 :(得分:3)

如果您希望id是整数数组,则应更新验证规则,如下所示:

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

答案 1 :(得分:1)

使用$ request-> validate()时首先知道;失败时会引发异常! 并且它们由laravel自动处理。如果是获取正常发布表单,则该过程将重定向回表单

请注意,在 AJAX 请求期间使用validate方法时,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 有很多选项可以个性化我们的验证过程。