Реализуете пользовательский геттер в Yii?
Я работаю с Yii, и у меня следующая ситуация:
У меня есть таблица MySQL:
charges {
id INT AUTOINCREMENT,
name VARCHAR(256),
value DOUBLE
}
Тогда у меня есть модель из этой таблицы. И, наконец, у меня есть представления для создания, списка, администратора, обновления и просмотра.
В админке и представлении просмотра я хочу отобразить value
поле с двумя десятичными числами Один из вариантов сделать это может быть в представлении и в файлах администратора в формате числа. Есть ли способ создать метод в модели, а затем ничего не делать в представлениях, но сам метод решит форматирование числа?
Спасибо
1 ответ
Вы можете переопределить метод afterFind() 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
Когда форматирование завершено, мы можем использовать любой из них, как требуется, и не нужно переформатировать обратно к оригиналу, когда нам нужен оригинал.