Проверка Laravel одно из двух полей должно быть заполнено

У меня есть два поля:

QQ

электронная почта

Как настроить объект валидатора так, чтобы одно из этих полей должно быть заполнено? Не важно, что именно.


    $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 ответов


required_without должны работать.

Это означает, что поле является обязательным, если в других местах нет. Если имеется более двух полей и требуется только одно, используйте required_without_all:foo,bar,...

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

в приведенном выше примере (заданном lucasgeiter) вам на самом деле нужно только одно из условий, а не оба.

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

Если у вас есть оба правила, то заполнение ни одного из них не приведет к отображению двух сообщений об ошибках. Таким образом, он будет проверять, что по крайней мере одно поле заполнено и будет отображать только одно сообщение об ошибке, если не заполнено.