Задать вопрос
taral
@taral
php программист

Как в yii2 лучше обрабатывать дату с datepicker?

Вопрос исключительно по yii2.
yii\jui\DatePicker возвращает дату в формате dd.yyyy.MM. В базе хранится в поле int. И естественно необходимо преобразовывать дату.
Каким образом это лучше сделать учитывая что форма должна работать правильно.
- Если дата уже выбрана, поле должно заполнятся правильным значением
- В базу должно писаться значение int если поле даты заполнено и чистится если его сделали пустым
----------
Сейчас я решаю так.
/**
 * @property integer $some_time - поле в базе
 */
class News extends ActiveRecord {

    public function rules() {
        return [['someTimeDate', 'date', 'format' => 'php:d.m.Y']];
    }

    public function getSomeTimeDate() {
        return $this->some_time? date('d.m.Y', $this->some_time) : '';
    }

    public function setSomeTimeDate($date) {
        $this->some_time= $date ? strtotime($date) : null;
    }
}
...
echo $form->field($model, 'someTimeDate')->widget('common\widgets\Datepicker', [
    'dateFormat' => 'dd.mm.yy',
])

И работаю с полем someTimeDate. В таком варианте все устраивает кроме необходимости писать геттер и сеттер для поля.
У валидатора yii\validators\DateValidator есть свойство timestampAttribute позволяющее переводить дату в необходимый формат для базы. Но я не нашел применения ему. Поскольку для методов оно уже не нужно. А если использовать свойство отформатированной даты то оно не будет заполнятся значением с базы.
  • Вопрос задан
  • 10669 просмотров
Подписаться 5 Простой Комментировать
Ответ пользователя vyachin К ответам на вопрос (3)
vyachin
@vyachin
Ищу работу
Потребуется настроить валидацию www.yiiframework.com/doc-2.0/guide-tutorial-core-v... указать формат в котором будет приходить дата от браузера (format=>'php:d.Y.m') и указать название атрибута в базе (timestampAttribute)
Ответ написан