我有2个(联系电话和联系移动电话)字段,必须填写A或B。
我正在使用laravel请求验证和required_without
规则来验证表单。
'contact_telephone' => 'required_without:contact_mobile',
'contact_mobile' => 'required_without:contact_telephone',
因此,使用此代码,它指定必须填充2个字段之一。
错误是,如果我尝试不填写任何表单就提交表单,则错误消息将显示两次。
我如何只显示一次消息?还是有更好的规则来实现这一目标,而不是我缺少的required_without
?
答案 0 :(得分:2)
只是一种可以解决您问题的替代方法。
使用数组进行联系,而不要使用contact_phone
和contact_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条错误消息并且需要1条规则。