yii2 datepicker

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

yii2 datepicker

Сообщение lub3r »

Друзья, подскажите пожалуйста - столкнулся с проблемой: нужно поле с форматом 01.01.2015
добавил на форме jui DatePicker с форматом dd.MM.yyyy

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

   <?= $form->field($model, 'date')->widget(\yii\jui\DatePicker::classname(), [
        'dateFormat' => 'dd.mm.yyyy',
        'language' => 'ru',
    ]) ?>
в rules[] модели

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

   public function rules()
    {
        return [
            [['date'],  'date',     'format' => 'dd.mm.yyy'],
        ];
    }
и при выборе даты 01.01.2015 в mysql залетает 2001-01-20 15:00:00
помогите это победить, плз!
Alex8552
Сообщения: 36
Зарегистрирован: 2014.10.07, 15:13

Re: yii2 datepicker

Сообщение Alex8552 »

много вариантов, например в модели:

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

public function beforeSave($insert)
{
    if (parent::beforeSave($insert)) {
        $this->date = date('d.m.Y',$this->date);
        return true;
    } else {
        return false;
    }
}
unclead
Сообщения: 162
Зарегистрирован: 2015.03.13, 19:44

Re: yii2 datepicker

Сообщение unclead »

Насколько я знаю БД хранят даты в своем формате. Не знаю как в mysql, но для postgres он задается в конфиге и по умолчанию в формате 2000-01-01.
Если требуется выводить дату в интерфейсах в требуемом формате то тут на помощь приходит afterFind

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

public function afterfind()
{
  $this->date = date('d.m.Y', strtotime($this->date)); // либо же через DateTime
  parent::afterFind();
}
lub3r
Сообщения: 2
Зарегистрирован: 2015.04.24, 10:08

Re: yii2 datepicker

Сообщение lub3r »

Спасибо большое! все получилось, правда в таком виде

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

    public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
        
            $this->date = date('Y-m-d', strtotime($this->date));
            
            return true;
        } else {
            return false;
        }
    }
Ответить