@ktotaika

Как заставить валидацию даты yii2 работать корректно?

Здравствуйте. Столкнулась с такой проблемой, что правила валидации для поля с датой не работают.
Суть: есть поле "дата регистрации" и "дата увольнения". Первое поле является обязательным, второе - нет, но при этом необходимо проверять, чтобы дата регистрации была меньше даты увольнения.
По факту: при выборе любой даты регистрации вылезает ошибка Значение «Reg Date» должно быть меньше значения «Expel Date», неважно, выбрана ли корректная дата увольнения или не выбрана вообще.

public function rules()
    {
        return
        [
            [['f_fio', 'i_fio', 'o_fio'], 'match', 'pattern' => '/^[A-Za-zА-Яа-яЁё\-\s\']*$/'],
            [['f_fio', 'i_fio', 'sex', 'id_organization', 'reg_date', 'birthday'], 'required'],
            ['reg_date', 'compare', 'compareAttribute' => 'expel_date', 'operator' => '<'],
            ['expel_date', 'date', 'skipOnEmpty' => true],
            [['specializations', 'o_fio',  'id_user', 'expel_date'], 'safe'],

        ];
    }
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
@ktotaika Автор вопроса
Самостоятельно решила проблему, помог вот такой вариант валидатора:

['expel_date', 'compare', 'compareAttribute' => 'reg_date', 'operator' => '>'],


Строку со skipOnEmpty удалила, она не нужна
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Надеюсь, что этот пример поможет Вам решить задачу.
['date_to', 'date', 'when' => function($model){
     return strtotime($model->date_to) < strtotime($model->date_from);
}, 'message' => 'Дата прилёта должна быть больше или равна Дате вылета']
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы