【问题标题】:1 message for multiple required_without rules多条 required_without 规则的 1 条消息
【发布时间】:2018-12-26 10:30:28
【问题描述】:

我在表格中有 2 个(联系电话和联系手机)字段,需要填写 A 或 B。

我正在使用 laravel 请求验证和 required_without 规则验证表单,如下所示。

'contact_telephone' => 'required_without:contact_mobile',
'contact_mobile' => 'required_without:contact_telephone',

因此,使用此代码,它指定必须填写 2 个字段之一。

错误是如果我尝试提交表单而不填写任何一个,错误消息会显示两次。

如何只显示一次消息?还是有更好的规则来实现这一点,而不是我缺少的required_without

【问题讨论】:

  • 是的,我明白你的意思了。这可能只是前端逻辑,如果您在两个字段中都发现错误,则会显示不同的消息。

标签: php laravel validation laravel-5


【解决方案1】:

只是一种可以解决您的问题的替代方法。

使用数组代替contact_phonecontact_telephone,使用contact[telephone]contact[mobile]

那么就可以使用以下的验证规则了:

'contact' => 'required|array|min:1' 

您的联系信息可能是You must fill in either the telephone number or the mobile number

【讨论】:

  • 好建议,虽然我想尽可能避免更改我的字段名称。我会继续看看,看看能不能解决,谢谢!
  • 原来你只需要指定1。我现在写一个答案。
【解决方案2】:

玩弄之后,我意识到实际上只需要required_without 中的1 个。

逻辑非常简单,所需的验证(无论使用什么)只针对空字段触发。如果我像这样指定手机为空时需要联系电话

'contact_telephone' => 'required_without:contact_mobile',

那么它将适用于所有 3 个可能的选项。

  1. 如果我填写的是手机而不是电话,则手机不再为空,并且不再需要电话字段(通过验证)。

  2. 如果我都没有填写,那么手机是空的,然后需要电话,因此显示1条错误消息(验证失败)。

  3. 如果我填写了电话,那么它就不用担心手机验证,因为无论如何电话都不是空的(通过验证)。

这意味着 2 个字段中的任何一个都是必需的,但它只会显示 1 条错误消息并且需要 1 条规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2014-11-09
    • 2021-03-01
    • 2018-02-02
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多