Как проверить что дата не меньше сегодня?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 202
Зарегистрирован: 2018.06.01, 09:54

Как проверить что дата не меньше сегодня?

Сообщение Chelobaka » 2019.08.07, 16:59

Здравствуйте,
Не нашел встроенного валидатора, решил таким способом но сомнения что не нашел встроеннго не покидают.

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

public function rules() {
 [['date'], 'checkDate'],
 }

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

public function checkDate($attribute_name, $params) {
        if ($this->date <= strtotime('NOW')) {
            $this->addError('date', Yii::t('transfer', 'Вы не можете сделать это задним числом.'));
            return false;
        }
    }


Usick
Сообщения: 33
Зарегистрирован: 2017.04.11, 12:07

Re: Как проверить что дата не меньше сегодня?

Сообщение Usick » 2019.08.07, 19:21

Из встроенного первое что приходит на ум - compare.
Примерно так:

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

['date', 'compare', 'compareValue' => strtotime('NOW'), 'operator' => '>=', 'message' => Yii::t('transfer', 'Вы не можете сделать это задним числом.')],

Аватара пользователя
Chelobaka
Сообщения: 202
Зарегистрирован: 2018.06.01, 09:54

Re: Как проверить что дата не меньше сегодня?

Сообщение Chelobaka » 2019.08.21, 10:33

Usick писал(а):
2019.08.07, 19:21
Из встроенного первое что приходит на ум - compare.
Примерно так:

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

['date', 'compare', 'compareValue' => strtotime('NOW'), 'operator' => '>=', 'message' => Yii::t('transfer', 'Вы не можете сделать это задним числом.')],
Спасибо, но есть другая проблема с использованием данного правила.
В виде у меня отображается дата как 10-10-1986 и как следсвие валидаци не проходит! BeforeValidate не помогает.
То есть js валидация формы. Отключать не вариант т.к надо проверять не пустое ли.

yiiliveext
Сообщения: 499
Зарегистрирован: 2019.08.13, 01:49

Re: Как проверить что дата не меньше сегодня?

Сообщение yiiliveext » 2019.08.21, 15:06

Используте whenClient, код для проверки на клиенте https://jsfiddle.net/qL3vzedm/

Ответить