@frmax
человек

Почему validate(сравнить 2 поля ) не работает?

Доброй ночи,
сразу опишу проблему:

Делаю валидацию 2 полей или 1 или 2 должно быть заполнено!

[['number', 'email'], 'required', 'when' => function($model) {
					if($model->email == '' && $model->number ==''){
						return false;
					} else {
						return true;
					}
				}, 'enableClientValidation' => false],


Валидация проходит с 2 пустыми полями) как будто функцию я вообще не писал. Может кто встречался с таким?
  • Вопрос задан
  • 267 просмотров
Пригласить эксперта
Ответы на вопрос 1
serhioli
@serhioli
Все правильно - when применит валидатор require только если вернется true. У вас оба поля пустых(это "железное" true) и вы возвращаете false - валидатор не применяется.

Попробуйте так:
[['number', 'email'], 'required', 'when' => function($model) {
          return ($model->email == '' && $model->number =='');
        }, 'enableClientValidation' => false],
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы