代码之家  ›  专栏  ›  技术社区  ›  POV

验证后请求Laravel?

  •  2
  • POV  · 技术社区  · 7 年前

    我验证POST请求,如:

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

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

    为什么验证不起作用?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Marcin Nabiałek    7 年前

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

    $validator = Validator::make($request->all(), [
                "id" => 'required|array',
                "id.*" => 'integer'
            ]);
    
        2
  •  1
  •   Mohamed Allal    6 年前

    首先知道何时使用$request->验证();当它失败时,会引发异常! 收到 ,或 正常后处理形式, 该过程将重定向回表单 .

    注意,当在 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 有很多选项可以个性化我们的验证过程。