Вопрос исключительно по 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 позволяющее переводить дату в необходимый формат для базы. Но я не нашел применения ему. Поскольку для методов оно уже не нужно. А если использовать свойство отформатированной даты то оно не будет заполнятся значением с базы.