首页 > 解决方案 > 两个字段都可以为空,但填写时只需要一个

问题描述

我在 Laravel 中制作一页并使用表单请求进行验证。我在那个页面上有 2 个代码。

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

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

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

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

标签: laravelvalidationlaravel-formrequest

解决方案


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

  1. 优惠券代码为空,促销代码为空
  2. coupon_code 值,promo_code null
  3. coupon_code null,promo_code 值

强制执行这 3 对值中的任何一个都不需要任何验证规则。您可以将这两个规则都设置为可为空,并且没问题。

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

  1. coupon_code 值,promo_code 值

如果是这种情况,那么required您将使用以下命令而不是使用prohibited_unless

  [
    'promo_code' => [
      'prohibited_unless:coupon_code,null',
    ],
    'coupon_code' => [
      'prohibited_unless:promo_code,null',
    ],
  ]

这假设您有默认的ConvertEmptyStringsToNull中间件。


推荐阅读