Используя Yii Framework, как правильно обработать атрибут перед его отображением с помощью CHtml :: activeTextField ()? - PullRequest
0 голосов
/ 13 марта 2010

Скажите, у меня есть эта строка кода в представлении.

<?php echo CHtml::activeTextField($model,'start_time'); ?>

start_time - это отметка времени UNIX. Просто отображая его в виде, я могу применять к нему такие функции, как date (). Где я должен применить форматирование, когда я отображаю его в форме, используя вышеуказанную строку кода? (Этот случай отметок времени / дат может быть особенным, но меня также интересует, как бы вы поступили, если бы это была не дата, и я просто хочу работать с

"значение в базе данных" <> "различные представления значения в разных представлениях.

Спасибо =)

Ответы [ 3 ]

1 голос
/ 14 марта 2010

Обычно мы расширяем CActiveRecord::afterFind(), чтобы преобразовать данные в понятный человеку формат, и CActiveRecord::beforeValidate(), чтобы преобразовать их обратно.

Если вам нужно более одного формата, доступного в любое время, вы можете попробовать использовать геттеры и сеттеры Yii.

Имея оба

  • CActiveRecord::getFieldName() и
  • CActiveRecord::setFieldName($value)

позволяет вам поставить CHtml::activeTextField($model, 'fieldName') в ваших представлениях. Очевидно, что вы манипулируете базовым столбцом базы данных в этих методах (очевидно, он называется start_time в вашем случае). Надеюсь, это поможет.

1 голос
/ 13 марта 2010

Я использовал CHtml :: textField вместо CHtml :: activeTextField следующим образом:

<?php echo CHtml::textField(get_class($model).'[start_time]', date('Y-m-d H:i', $model->start_time)); ?>

Я посмотрю, сработает ли это в долгосрочной перспективе.

Таким же образом, вместо применения метода даты прямо здесь, я мог бы получить что-то вроде: Круто ..:]

0 голосов
/ 12 июня 2010

IMO, afterFind () заставляет вас замедлить поиск, и я не думаю, что beforeValidate () играет какую-либо роль в отображении данных. Я предпочитаю добавлять getttart_time () в класс модели, чтобы переопределить метод получения значения start_time. Там ваш код форматирования запускается только тогда, когда вам нужно отобразить данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...