如何在 laravel 中验证递归对象

Posted

技术标签:

【中文标题】如何在 laravel 中验证递归对象【英文标题】:How to validate recursion objects in 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 无论如何,这是一个长镜头。 :) 【参考方案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函数来实现

【讨论】:

以上是关于如何在 laravel 中验证递归对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 验证中要求数组并防止获得意外的键

在 Reactjs 中循环遍历 Laravel 验证错误对象

如何验证 REST Lumen/Laravel 请求中的参数?

如何在 Laravel 5 中验证模型?

如何在 laravel 5.2 中使用多重身份验证 [关闭]

如何在 Laravel 中验证数组?