Laravel数组字段总和验证

时间:2018-07-15 13:03:21

标签: laravel laravel-validation

我是Laravel的新手,在这里我将Laravel的验证器用于不在Laravel中构建的项目。

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

我的输入看起来像:

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

}

我需要确保我的百分比之和为100。有没有简单的方法?

2 个答案:

答案 0 :(得分:2)

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

 <ng-quill-editor ng-model="vm.message" toolbar="true" link-tooltip="true" 
 image-tooltip="true" toolbar-entries="font size bold list bullet italic 
 underline strike align color background link image" editor-required="true" 
 required="" error-class="input-error"></ng-quill-editor>

答案 1 :(得分:1)

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');
        }
    });
}