在laravel 5.8中,嵌套的替代验证required_without。

问题描述 投票:1回答:1

我的要求是

{
    "formulations": [
        {
            "formulation_id": null,
            "formulation_custom_name": "test",
            "meal_time_id": null,
            "remark": "demo1"
        },
        {
            "formulation_id": 3,
            "formulation_custom_name": "asd",
            "meal_time_id": 2,
            "remark": "demo"
        }
    ]
}

验证规则

'formulations.*.formulation_id' => 'required_with:formulations.*.formulation_custom_name'

第一个对象的工作正常,即当配方_custom_name存在时,需要配方_id。

"errors": {
    "formulations.0.formulation_id": [
        "The formulations.0.formulation_id field is required when formulations.0.formulation custom name is present."
    ]
}

现在我的问题与上面的情况完全相反,即当formulation_id为空或不存在时,需要validateformulation_custom_name,如

'formulations.*.formulation_id' => 'required_without:formulations.*.formulation_custom_name'

但这是 不灵 对于这个要求,像这样

{
    "formulations": [
        {
            "formulation_id": 6,
            "formulation_custom_name": "test",
            "meal_time_id": null,
            "remark": "demo1"
        }
}

先谢谢

laravel validation nested laravel-5.8 validationrules
1个回答
0
投票

required_without 验证器中的规则检查字段是否存在,而不是检查字段是否存在。empty 价值或 null 值。

所以你需要 required_if 在这里,并使用类似下面的

'formulations.*.formulation_id' => 'required_if:formulations.*.formulation_custom_name,' // it will work for blank and null

或者如果你需要更复杂的条件,那么你可以使用 requiredIf 自定义规则

或者如果你需要反过来写,那么就像下面这样写

'formulations.*.formulation_custom_name' => 'required_without:formulations.*.formulation_id'

文件链接

© www.soinside.com 2019 - 2024. All rights reserved.