代码之家  ›  专栏  ›  技术社区  ›  Martin AJ

为什么Laravel不关心数组输入验证?

  •  1
  • Martin AJ  · 技术社区  · 6 年前

    这是我的验证器:

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

    它验证了 considerations 也。如果 $request 缺乏 注意事项 项目,它抛出:

    “注意事项”字段是必需的。

    这是对的。但它不在乎 product_id . 如果我不发送那个参数,它也会通过验证。只有当我发送 product_id[0] 没有价值。然后它会抛出:

    “产品id.0”字段是必需的。

    但如果我不派 产品id 参数,它不关心也不会抛出任何错误。为什么?我该怎么解决呢?

    3 回复  |  直到 6 年前
        1
  •  1
  •   aceraven777    6 年前

    你必须对 product_id 本身。例如。

    $validator = Validator::make($request->all(), [
       'considerations' => 'required',
       'product_id'  => "required|array",
       'product_id.*'  => "required"
    ]);
    
        2
  •  2
  •   Keir Lavelle    6 年前

    看起来你的验证规则相当于

    “如果提供了product_id字段,请确保product_id数组的任何内容都保留一个值”

    我再加一条规则 'product_id' => 'required' 到您的验证数组,该数组应确保产品id密钥也在post字段中。

        3
  •  1
  •   Sibasankar Bhoi    6 年前

    你可以这样用

            $rules =   ['considerations' => 'required',
                       'product_id-token' => 'required|array'];
            $message = ['considerations.required' => 'Your validation message',
                       'product_id-token.required' => 'Your validation message',];
    
            $validator = Validator::make($request->input(), $rules, $message);