如何在 Laravel 中验证数组?

新手上路,请多包涵

我尝试在 Laravel 中验证数组 POST:

 $validator = Validator::make($request->all(), [
    "name.*" => 'required|distinct|min:3',
    "amount.*" => 'required|integer|min:1',
    "description.*" => "required|string"

]);

我发送空 POST 并得到这个 if ($validator->fails()) {} 作为 False 。这意味着验证是正确的,但事实并非如此。

如何在 Laravel 中验证数组?当我使用 input name="name[]"

原文由 Darama 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 807
2 个回答

星号 (*) 用于检查数组中的 ,而不是数组本身。

 $validator = Validator::make($request->all(), [
    "names"    => "required|array|min:3",
    "names.*"  => "required|string|distinct|min:3",
]);

在上面的例子中:

  • “names” 必须是一个至少包含 3 个元素的数组,
  • “names”数组中的 必须是不同的(唯一的)字符串,长度至少为 3 个字符。

编辑: 从 Laravel 5.5 开始,您可以直接在 Request 对象上调用 validate() 方法,如下所示:

 $data = $request->validate([
    "name"    => "required|array|min:3",
    "name.*"  => "required|string|distinct|min:3",
]);

原文由 Filip Sobol 发布,翻译遵循 CC BY-SA 4.0 许可协议

稍微复杂一点的数据,混合了@Laran 和@Nisal Gunawardana 的答案

[
   {
       "foodItemsList":[
    {
       "id":7,
       "price":240,
       "quantity":1
                },
               {
                "id":8,
                "quantity":1
               }],
        "price":340,
        "customer_id":1
   },
   {
      "foodItemsList":[
    {
       "id":7,
       "quantity":1
    },
    {
        "id":8,
        "quantity":1
    }],
    "customer_id":2
   }
]

验证规则将是

 return [
            '*.customer_id' => 'required|numeric|exists:customers,id',
            '*.foodItemsList.*.id' => 'required|exists:food_items,id',
            '*.foodItemsList.*.quantity' => 'required|numeric',
        ];

原文由 Prafulla Kumar Sahu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题