必须填写 Laravel 验证两个字段中的一个

2022-08-30 08:44:28

我有两个字段:

在线客服

电子邮件

如何设置验证器对象,以便必须填写其中一个字段?哪个并不重要。


$messages = array(
    'email.required_without:qq' => Lang::get('messages.mustenteremail'),
    'email.email' => Lang::get('messages.emailinvalid'),
    'qq.required_without:email' => Lang::get('messages.mustenterqq'),
);

答案 1

required_without应该有效。

这意味着如果另一个字段不存在,则该字段是必需的。如果具有两个以上的字段,并且只有一个字段是必需的,请使用required_without_all:foo,bar,...

$rules = array(
    'Email' => 'required_without:QQ',
    'QQ' => 'required_without:Email',
);

答案 2

在上面的例子中(由lucasgeiter给出),你实际上只需要其中一个条件,而不是两者兼而有之。

$rules = array(
    'Email' => 'required_without:QQ'
);

如果您同时拥有这两个规则,则不填写这两个规则都不会导致显示两条错误消息。这样,它将检查是否至少填写了一个字段,并且如果两个字段都未填写,则仅显示一条错误消息。


推荐