【问题标题】:Validate 2 depth array on Laravel在 Laravel 上验证 2 深度数组
【发布时间】:2020-09-02 21:48:27
【问题描述】:

有没有办法验证这个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】:

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

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

    因此,如果您可以使用以下方式访问属性,则您的模式将起作用 [0]['entities'][0]['is_total'] 为你的规则 '*.entities.*.is_total' => 'required|boolean',

    【讨论】:

    • 好的,但是实体验证被忽略了。只评估交易规则
    猜你喜欢
    • 1970-01-01
    • 2017-03-31
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多