【问题标题】:How to validate recursion objects in laravel如何在 laravel 中验证递归对象
【发布时间】:2020-03-22 22:27:48
【问题描述】:

如何在 Laravel 5+ 中验证递归嵌套对象

我有公司的平衡结构。有规律

<row>: {
name
digit
rows: [<row>]
}

json结构示例

{
    "balance_data": {
        "rows": [
            {
                "name": "aktiva",
                "digit": "5555.33",
                "rows": [
                    {
                        "name": "balance catalog 1",
                        "digit": "1234.12",
                        "rows": [
                            {
                                "name": "balance subcatalog name 1",
                                "digit": "4321.21",
                                "rows": []
                            },
                            {
                                "name": "balance subcatalog name 2",
                                "digit": "4321.21",
                                "rows": []
                            }
                        ]
                    },
                    {
                        "name": "balance catalog 2",
                        "digit": "1234.12",
                        "rows": [
                            {
                                "name": "balance subcatalog name 3",
                                "digit": "4321.21",
                                "rows": []
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

如何在所有嵌套和子嵌套对象中验证数字是否为必需

【问题讨论】:

  • 我不知道这是否适用于您的情况,但请看一下:laravel.com/docs/5.8/validation#validating-arrays 并尝试一下(没有承诺):'*.digit' =&gt; 'required'
  • @user3532758 这不起作用,因为有多层嵌套
  • @PavelLint 无论如何,这是一个长镜头。 :)

标签: json laravel validation recursion nested


【解决方案1】:

您必须为此编写一个自定义验证器。查看this section of the docs here

【讨论】:

    【解决方案2】:
    <?php
    function myFunction($value, $key) 
    { 
        // do validation, this will be called for every key, recursively
    } 
    
    $arr=array("balance_data"=>array("row"=>"", array("row"=>"2"))); 
    
    array_walk_recursive($arr, "myFunction"); 
    
    ?>
    

    这可以使用php的inbuild array_walk_recursive函数来实现

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 2021-07-15
      • 2018-08-23
      • 2018-05-05
      • 2017-10-15
      • 2016-08-10
      相关资源
      最近更新 更多