1条消息,用于多个required_without规则

时间:2018-07-18 13:19:54

标签: php laravel validation laravel-5

我有2个(联系电话和联系移动电话)字段,必须填写A或B。

我正在使用laravel请求验证和required_without规则来验证表单。

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

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

错误是,如果我尝试不填写任何表单就提交表单,则错误消息将显示两次。

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

2 个答案:

答案 0 :(得分:2)

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

使用数组进行联系,而不要使用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条规则。