我正在Laravel中制作一个页面,并使用Form Request进行验证。我在那一页上有两个代码。
- 优惠券代码2(促销代码
我想设置条件,使这些代码可以为空,但当填充时,只需要一个。
我试过了,但没有得到正确的结果。
return [
'coupon_code' => 'nullable|required_without:promo_code',
'promo_code' => 'nullable|required_without:coupon_code'
];
根据您的描述,很明显您希望允许以下三个输入对:
- coupon_code为null,promo_code为null
- coupon_code值,promo_code为空
- coupon_code为空,promo_code值
强制执行这3对值中的任何一对都不需要任何验证规则。您可以将这两个规则都设置为可以为null,然后就可以了。
但从字里行间看,你似乎在要求拒绝这个值对:
- coupon_code值,promo_code值
如果是这种情况,那么不使用required
,而是使用prohibited_unless
:
[
'promo_code' => [
'prohibited_unless:coupon_code,null',
],
'coupon_code' => [
'prohibited_unless:promo_code,null',
],
]
这假设您有默认的ConvertEmptyStringsToNull
中间件。
使用required if
的验证。
return [
'coupon_code' => 'nullable|required_if:promo_code,==,null',
'promo_code' => 'nullable|required_if:coupon_code,==,null'
];