Как иметь несколько полей (D/M/Y) для одного свойства даты в Yii?

Я хочу записать день рождения пользователя в свою базу данных, и в таблице есть поле с именем dob. Когда я создавал модель и CRUD, он генерировал текстовое поле для dob, как всегда. Но я хочу создать три входа.

  1. Годами
  2. Месяцами
  3. и для свиданий

Поэтому мой вопрос заключается в том, как добавить дополнительные входные данные в форму модели. Я думал о добавлении новых атрибутов в класс модели, но в таблице таких атрибутов нет.

1 ответ

Решение

Добавьте поля к вашей модели:

public $year;
public $month;
public $date;

Добавьте эти методы в вашу модель:

protected function afterFind() {
    parent::afterFind();

    $dob = explode('/', $this->dob);
    $this->year = $dob[0];
    $this->month = $dob[1];
    $this->date = $dob[2];

    return $this;
}

protected function beforeSave() {
    parent::beforeSave();

    $this->dob = $this->year .'/'. $this->month .'/'. $this->date;

    return $this;
}

Теперь вы можете использовать их в форме CActiveForm:

<?php echo $form->textField($model, 'year'); ?>
<?php echo $form->textField($model, 'month'); ?>
<?php echo $form->textField($model, 'date'); ?>
Другие вопросы по тегам