rules() условие "или"

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
nihaha
Сообщения: 95
Зарегистрирован: 2017.02.12, 13:30

rules() условие "или"

Сообщение nihaha »

Хочу сделать авторизацию через email + пароль или телефон + пароль.
Обязательно должно быть заполнено либо поле email, либо поле телефона.
Как в rules() формы в секции required указать условие, ведь если оба аттрибута закинуть в required, то и заполнять нужно оба?

Код: Выделить всё

public function rules()
{
    return [
        [['email', 'phone', 'password'], 'required'],
    ];
}
uEhlO4a
Сообщения: 70
Зарегистрирован: 2017.08.12, 19:19

Re: rules() условие "или"

Сообщение uEhlO4a »

Код: Выделить всё

['email', 'required' , 'when' => function ($m) {
  return empty($m->phone) && !empty($m->password);
}],
['phone', 'required' , 'when' => function ($m) {
  return empty($m->email) && !empty($m->password);
}],
что-то вроде такого
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: rules() условие "или"

Сообщение andku83 »

&& !empty($m->password) - эта часть лишняя.
Пароль оставить в блоке в обычным required
Ответить