2012-04-26 2 views
1

Я работаю с Yii и у меня следующая ситуация:Реализация пользовательского геттера в Yii?

У меня есть MySQL таблицы:

charges { 
    id INT AUTOINCREMENT, 
    name VARCHAR(256), 
    value DOUBLE 
} 

Тогда у меня есть модель из этой таблицы. И, наконец, у меня есть представления для создания, списка, администратора, обновления и просмотра.

В администратора и зрения взглядов, я хочу, чтобы отобразить value поля отформатированного с двумя десятичными числами. Один из вариантов сделать это может быть в виде и admin файлы форматируют число. Есть ли способ создать метод в модели, а затем не нужно ничего делать в представлениях, но сам метод решит формирование числа?

благодарит

ответ

3

Вы можете переопределить afterFind() method of CActiveRecord в модели и формат value поля в нем.

В качестве альтернативы вы также можете объявить виртуальный атрибут модели и установить его в методе afterFind() и использовать этот виртуальный атрибут в представлениях.

Пример (с виртуальным атрибутом):

Class ChargesModel extends CActiveRecord{ 
    public $valueModified; 

    /* 
    * other code 
    */ 

    protected function afterFind(){ 
     parent::afterFind(); 
     // in the following line i'm just making $valueModified and $value equal, but obviously you would have to insert the 2 decimals 
     $this->valueModified=$this->value; 
    } 
} 

Затем вы можете получить доступ к виртуальному атрибуту, как это: $modelObject->valueModified

Я бы порекомендовал вам использовать виртуальный атрибут, потому что тогда оба немодифицированных $value и изменен $modifiedValue, как только форматирование будет завершено, мы можем использовать либо по мере необходимости, и не должны переформатировать назад к оригиналу, когда нам нужен оригинал.

Смежные вопросы