首页 > 解决方案 > Laravel 验证数组

问题描述

我的 Laravel 表单提交有一个名为 invoice_products 的项目,其中包含发票数据的所有行。这是我在dd($request->invoice_products). 它是由两条动态生成的表格线组成的数组。我的表格中可以有很多这样的行。我正在尝试单独验证每个字段。

 [
  {
    "product_no": 3,
    "product_name": "Dolor vitae ducimus voluptatum quia.",
    "product_price": 12,
    "product_disc": 0,
    "product_qty": 1,
    "line_total": "12.00",
    "product_tax": {
      "rate": 5,
      "name": "VAT"
    },
    "line_tax_value": "0.60",    
    "product_sku": "Dr. Bailee Aufderhar MD"
  },
  {
    "product_no": 13,
    "product_name": "Esse explicabo quos ut autem iusto nam est quia.",
    "product_price": 111,
    "product_disc": 0,
    "product_qty": 1,
    "line_total": "111.00",
    "product_tax": {
      "rate": 5,
      "name": "VAT"
    },
    "line_tax_value": "5.55",    
    "product_sku": "Addie Reichert II"
  }
]

这是我在 laravel 中的验证码。它似乎不起作用。我错过了什么?我在文档中读到可以使用 *.

     $this->validate($request, [
            'invoice_products.product_sku.*' => 'required|exists:items,sku',
            'invoice_products.product_price.*' => 'required',
            'invoice_products.product_disc.*' => 'required',
            'invoice_products.product_qty.*' => 'required|numeric|min:0|regex:/^\d+(\.\d{1,2})?$/',
    ]);

标签: laravel

解决方案


您将星号放在错误的位置,请尝试:

'invoice_products.*.product_sku' => ...

推荐阅读