两个字段都可以为空,但填写时只需要一个



我正在Laravel中制作一个页面,并使用Form Request进行验证。我在那一页上有两个代码。

  1. 优惠券代码2(促销代码

我想设置条件,使这些代码可以为空,但当填充时,只需要一个。

我试过了,但没有得到正确的结果。

return [
'coupon_code' => 'nullable|required_without:promo_code',
'promo_code' => 'nullable|required_without:coupon_code'
];

根据您的描述,很明显您希望允许以下三个输入对:

  1. coupon_code为null,promo_code为null
  2. coupon_code值,promo_code为空
  3. coupon_code为空,promo_code值

强制执行这3对值中的任何一对都不需要任何验证规则。您可以将这两个规则都设置为可以为null,然后就可以了。

但从字里行间看,你似乎在要求拒绝这个值对:

  1. 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'
];

相关内容

  • 没有找到相关文章

最新更新