【发布时间】:2018-11-29 18:38:57
【问题描述】:
我正在使用 Laravel 表单请求验证来验证对象数组,在每个对象中我们有两个键 neverExpires 和 numberOfBillingCycles。这两个键都不是必需的,但如果两者都有值验证应该失败,因为我只想接受一个或另一个。
"addOns": {
"add": [
{
"inheritedFromId": "EMEX1",
"neverExpires": "false",
"numberOfBillingCycles": "10"
},
{
"inheritedFromId": "EX1",
"neverExpires": "true"
},
{
"inheritedFromId": "EX2"
}
]
},
所以,首先,因为neverExpires 和numberOfBillingCycles 都有值,所以它应该无法通过验证。第二个和第三个实例应该通过,因为它只包含 neverExpires 或不包含任何一个。
我尝试创建自定义验证器并将两个字段作为参数传递,例如addOns.add.*.neverExpires 和addOns.add.*.numberOfBillingCycles,但问题是未设置参数索引,我似乎无法在其中找到数组索引使我能够检查正确的数组对象值的自定义规则。
希望这有意义吗?提前干杯。
【问题讨论】:
-
您能向我们展示您的商店请求文件吗?
-
@JoseSilva 我现在已经把它拆掉了,因为根本无法让它工作对不起。我已经尝试了所有
require_without、require_if等,但它们似乎不允许我只确保完成其中一个或不允许完成任何一个。如果两者都存在并且有价值,我只希望它验证失败。 -
验证后你试过了吗?函数 withValidator() ?
-
你使用的是什么版本的 Laravel?
-
@JoseSilva 感谢您抽出宝贵时间回复,但我选择了罗斯的解决方案,因为它满足了我的需求。
标签: php laravel validation