代码之家  ›  专栏  ›  技术社区  ›  mrateb

Laravel数组字段和验证

  •  1
  • mrateb  · 技术社区  · 6 年前

    我刚接触到Laravel,在那里我使用Laravel的验证器来验证不是在Laravel中构建的项目。

    我需要知道是否有一个简单的内置laravel验证器来验证数组中所有对象中某个字段的总和。

    我输入的内容如下:

    {
        "customer":95,
        "name": "My object",
        "values":
            [
            { 
                "name": "AAA",
                "percentage": 50
            },
            {
                "name": "BBB",
                "percentage": 50
            }
        ]
    
    }
    

    我要确保我的百分比之和是100。有简单的方法吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   doncadavona    6 年前

    使用 Custom Validation Rules 用于单属性验证。

    使用 After Validation Hook 对于其他或更复杂的验证,比如多个字段的总和。

    public function withValidator($validator)
    {
        $validator->after(function ($validator) {
            if ($this->get('field1') + $this->get('field2') + $this->get('field3') != 100) {
                $validator->errors()->add(null, 'The sum of field1, field2 and field3 must be 100');
            }
        });
    }
    
        2
  •  2
  •   jastend    6 年前

    我认为你最好创造一个 custom validation rule . 在验证中,我将值数组转换为集合,并使用 collection sum method . 例如。:

    public function passes($attribute, $value)
    {
        $values = collect($value);
    
        return $values->sum('percentage') <= 100;
    }