验证开机自检请求拉拉维尔



我验证 POST 请求,如下所示:

$validator = Validator::make($request->all(), [
            "id.*" => 'required|integer'
        ]);
        if ($validator->fails()) {
            return response()->json($validator->errors, 400);
        }
        echo "Ok";

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

为什么验证不起作用?

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

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

首先知道何时使用 $request->validate(); 当它失败时,会引发异常!它们由拉拉维尔自动处理。如果是 get普通的发布表单,该过程将重定向回表单

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

如果你不想有这样的自动行为,请手动创建一个验证器,那么你可以用 ->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有很多选择可以个性化我们的验证过程。

最新更新