【问题标题】:Nested alternative validation required_without in laravel 5.8laravel 5.8 中的嵌套替代验证 required_without
【发布时间】:2020-09-28 21:20:21
【问题描述】:

这是我的要求

{
    "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'

为第一个对象正常工作,即当有formation_custom_name 时需要formation_id

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

现在我的问题与上述情况完全相反,即验证 当formulation_id 为空或不存在时需要formation_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】:

    验证器中的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'
    

    Document Link

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 2022-01-19
      • 2018-08-15
      • 2021-12-09
      • 1970-01-01
      • 2021-03-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多