Laravel上的验证2深度数组

问题描述 投票:0回答:1

[有没有一种方法可以验证此array(),到目前为止,什么都没用:

[
  {
    "transaction": {
      "user_id": 6,
      "month": 12,
      "year": 2084
    },
    "entities": [
      {
        "name": "Allan Botsford",
        "value": 3,
        "is_total": false,
        "type": "CASH"
      },
      {
        "name": "Luisa Schiller Sr.",
        "value": 6266,
        "is_total": false,
        "type": "CASH"
      },
      {
        "name": "Susie Deckow MD",
        "value": 506700,
        "is_total": false,
        "type": "CASH"
      }
    ]
  },
  {
    "transaction": {
      "user_id": 7,
      "month": 5,
      "year": 2002
    },
    "entities": [
      {
        "name": "Raquel Jast",
        "value": 7,
        "is_total": false,
        "type": "CASH"
      },
      {
        "name": "Wendell Herman I",
        "value": 4480,
        "is_total": false,
        "type": "CASH"
      },
      {
        "name": "Oceane Greenfelder DDS",
        "value": 46344,
        "is_total": false,
        "type": "CASH"
      }
    ]
  }
]

我可以使用以下规则验证交易:

[
        '*.transaction.month' => 'required|numeric',
        '*.transaction.year' => 'required|numeric',
        '*.transaction.transaction_date' => 'sometimes|date_format:Y-m-d'
]

问题出在嵌套entities数组中,因为忽略了以下规则:

return [
        '*.entities.*.is_total' => 'required|boolean',
        '*.entities.*.name' => 'required|string',
        '*.entities.*.value' => 'required|numeric',
        '*.entities.*.type' => ['required', Rule::in(CashTemporaryInvestment::TYPES)]
]

我在laravel文档中找不到任何提示。我将不胜感激。我正在使用Laravel 7

laravel laravel-validation laravel-7
1个回答
0
投票

Laravel Validator通配符将使用以下preg_match()起作用,如在Validator类中所示

$pattern = str_replace('\*', '([^\.]+)', preg_quote($this->getPrimaryAttribute($attribute), '/'));

因此,如果您可以使用[0]['entities'][0]['is_total']作为您的规则'*.entities.*.is_total' => 'required|boolean',

© www.soinside.com 2019 - 2024. All rights reserved.