Валидация даты. Чудеса?

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

Валидация даты. Чудеса?

Сообщение EvgeniyRRU »

Здравствуйте, уважаемые yii-шники. В кратце, есть таблица в базе, стандартная для блога, в общем-то. Есть там поле time, тип поля - datetime (MySQL).

Задал я в правилах валидации псевдовалидатор default и валидатор date. Формат у них одинаковый:
Изображение

Однако, если я поле оставляю при создании записи пустым, и вызываю апдейт - то вываливается ошибка валидации.
Изображение

Как это объяснить? Кто-нибудь сталкивался с такими вещами?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Хм, воспроизвёл с Y-m-d и с убранным format у `date` . Походу это баг. $timestamp = $this->parseDateValue($value) возвращает false...
Последний раз редактировалось yiijeka 2014.10.02, 09:59, всего редактировалось 1 раз.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Валидация даты. Чудеса?

Сообщение HQ0 »

yiijeka, пили issue
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Устал уже... разобраться надо.

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

   [['date'], 'default', 'value' => date('Y-m-d')],
            [['date'], 'date'],
Так не работает

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

   [['date'], 'default', 'value' => date('Y-m-d')],
            [['date'], 'date', 'format' => 'Y-m-d'],
Работает. Застопаривается, так как подключено extension_loaded('intl') и код $formatter = new IntlDateFormatter($this->locale, $this->_dateFormats[$format], IntlDateFormatter::NONE, $this->timeZone); в ядре возвращает уже другое значение.
Последний раз редактировалось yiijeka 2014.10.02, 10:10, всего редактировалось 1 раз.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

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

$formatter = new IntlDateFormatter($this->locale, $this->_dateFormats[$format], IntlDateFormatter::NONE, $this->timeZone);
var_dump($format,$this->_dateFormats);die();
string(6) "medium" array(4) { ["short"]=> int(3) ["medium"]=> int(2) ["long"]=> int(1) ["full"]=> int(0) } 
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Ёптель не следил за этим обновлением. Но у меня теперь валидатор ['date'], 'date',не отрабатывает, нужно явно указывать формат 'format' => 'Y-m-d'.
Последний раз редактировалось yiijeka 2014.10.02, 10:09, всего редактировалось 1 раз.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

EvgeniyRRU у вас последняя версия yii2 ? rc?
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Валидация даты. Чудеса?

Сообщение HQ0 »

'format' => date('Y-m-d')
Без date() ведь, да? Просто строкой?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Да, везде поправил, опечатка.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Валидация даты. Чудеса?

Сообщение HQ0 »

Аа, так format надо в ICU формате писать же! Разве нет? А если php-формат, то начинать с php:

http://www.yiiframework.com/doc-2.0/yii ... mat-detail
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

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

  [['date'], 'default', 'value' => date('Y-m-d H:i:s')],
            [['date'], 'date', 'format' => 'Y-m-d H:m:s'],
Вот так работает, я создам issue - это путает, разные форматы.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

HQ0 да так и есть, наверное issue не буду. Просто date('Y-m-d H:i:s') нужно заменить на ...
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Валидация даты. Чудеса?

Сообщение HQ0 »

Конечно не стоит, если работает так, как описано в доке. :)
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Всё ничего не нужно заменять. Нужно 'format' в ICU вводить. :D
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Этих форматов даты, у каждой функции свой, столько букв, каждый раз лезу в мануал, чтобы посмотреть как задать формат. Ужас.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Валидация даты. Чудеса?

Сообщение HQ0 »

Я тоже не особо привык, но раз и многие js-либы используют этот формат — стоит изучить :)
EvgeniyRRU
Сообщения: 30
Зарегистрирован: 2012.01.18, 03:29

Re: Валидация даты. Чудеса?

Сообщение EvgeniyRRU »

yiijeka писал(а):EvgeniyRRU у вас последняя версия yii2 ? rc?
Да, последняя. Слил через Composer в воскресенье, сразу после того как Sam Dark анонсировал его релиз у себя в блоге (я на Rss-ку подписан).

Так как рекомендуете поступать? По разному писать форматы?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Валидация даты. Чудеса?

Сообщение yiijeka »

Можете в одном, но тогда в начале пишите php:Y-m-d H:i:s . Как душе угодно :)
VictorV
Сообщения: 1
Зарегистрирован: 2016.07.27, 15:33

Re: Валидация даты. Чудеса?

Сообщение VictorV »

Можно так
[['date_registrations','date_nn'], 'date', 'format' => 'y-m-d'],
если 2016-08-05
Y!=y
Аватара пользователя
girmate
Сообщения: 1534
Зарегистрирован: 2015.10.27, 12:52

Re: Валидация даты. Чудеса?

Сообщение girmate »

Извиняюсь за флуд, не подскажете ли, какую цветовую схему вы используете в IDE (та что на скриншоте)?
Осторожно! Вы общаетесь с новичком ;)
Ответить