【问题标题】:Laravel sibling attribute base validationLaravel 兄弟属性基础验证
【发布时间】:2019-06-22 05:36:56
【问题描述】:

我的有效负载中有一组属性,如下所示:

{
    "courier_code" : "shipadelivery",
    "rule" : [ 
                {
                    "attribute" : "day",
                    "operator" : "eq",
                    "value" : "tue"
                }
            ],
    "is_active" : true,
    "priority" : 2
}

这里我需要验证的是,如果属性是天,那么值应该是['mon','tue','wed','thu','fri','sat','sun'],操作符应该是eq

我应该如何使用现有的属性参数进行验证。我已经对此进行了验证,不检查属性如下

        $days = 'mon,tue,wed,thu,fri,sat,sun';
        $rules = [
            'courier_code' => 'required|exists:shipment_companies,code',
            'is_active' => 'required|boolean',
            'priority' => 'required|integer',
            'rule' => 'required',
            'rule.*.attribute' => 'required',
            'rule.*.attribute' => 'required|in:'.$attributes,
            'rule.*.value' => 'required',
            'rule.*.operator' => 'required|in:'.$operators,
        ];

【问题讨论】:

    标签: laravel validation laravel-5 lumen


    【解决方案1】:

    您可以使用条件将规则动态添加到规则数组中

    use Illuminate\Validation\Rule;
    
    $rules = [
        'courier_code' => 'required|exists:shipment_companies,code',
        'is_active' => 'required|boolean',
        'priority' => 'required|integer',
        'rule' => 'required',
        'rule.*.attribute' => 'required',
        'rule.*.operator' => [
            'required',
            Rule::in($operators),
        ],
    ];
    
    if($request->filled('key-to-check') && $request->input('key-to-check') == 'day'){
        $rules['rule.*.value'] = 'required|in:'.implode(',', $attributes);
    }
    

    因为是数组所以可以循环运行:

    foreach($request->input('rule') as $key => $value){
            $rule_key = 'rule.'.$key.'.value';
    
            if($value['attribute'] == 'day'){
                $rules[$rule_key] = 'required|in:'.$days;
            }else{
                $rules[$rule_key] = 'required';
            }
        }
    

    希望对你有帮助

    【讨论】:

    • no @Froxz 这与您的回答不同,我的情况是如果属性属性是天,那么我想检查值属性是否应该在我上面提到的数组中并抛出验证异常跨度>
    • @nifCody 我很高兴我的回答有帮助!谢谢
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多