我正在与Yii合作,我有以下情况:
我有一个MySQL表:
charges {
id INT AUTOINCREMENT,
name VARCHAR(256),
value DOUBLE
}
然后我从这张表中得到了模型。最后我有创建,列表,管理,更新和查看的视图。
在管理和视图视图中,我想显示使用两个十进制数字格式化的value
字段。执行此操作的一个选项可以是视图和 admin 文件格式化数字。有没有办法在模型中创建一个方法,然后不必在视图中做任何事情,但方法本身将解决格式化数字?
感谢
答案 0 :(得分: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
,一旦格式化完成,我们可以根据需要使用,而不是必须当我们需要原件时,重新格式化为原始版本。