【问题标题】:Laravel validate arraysLaravel 验证数组
【发布时间】:2020-04-16 06:04:28
【问题描述】:

我的 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


    【解决方案1】:

    你把星号放错地方了,试试:

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

    【讨论】:

    • 根据official docs,这是正确的语法。
    • 另外,invoice_products.product_rate 不存在于您的阵列中。你的意思是invoice_products.*.product_tax.rate
    • 对不起,应该是 {{invoice_products.product_price}} 。我的错。
    猜你喜欢
    • 2018-01-03
    • 2015-08-17
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 2016-09-01
    • 2021-07-24
    相关资源
    最近更新 更多