laravel 5.8 中的嵌套替代验证 required_without
Posted
技术标签:
【中文标题】laravel 5.8 中的嵌套替代验证 required_without【英文标题】:Nested alternative validation required_without in laravel 5.8 【发布时间】: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"
提前致谢
【问题讨论】:
【参考方案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
【讨论】:
以上是关于laravel 5.8 中的嵌套替代验证 required_without的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JWT API - Laravel 5.8 上验证用户群?
Laravel 5.8 验证在使用 Passport 失败后返回首页