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

时间:2015-01-10 10:50:56

标签: php validation laravel laravel-4

我有两个字段:

QQ

电子邮件

如何设置Validator对象以便必须填写其中一个字段?无关紧要。


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

2 个答案:

答案 0 :(得分:41)

required_without应该有用。

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

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

答案 1 :(得分:11)

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

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

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