1

我正在与 Yii 合作,我有以下情况:

我有一个 MySQL 表:

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

然后我有这个表中的模型。最后,我有了创建、列出、管理、更新和查看的视图。

管理视图视图中,我想显示value用两个十进制数字格式化的字段。执行此操作的一种选择是在视图管理文件中格式化数字。有没有办法在模型中创建一个方法,然后不必在视图中做任何事情,但方法本身会解决格式化数字的问题?

谢谢

4

1 回答 1

3

您可以在模型中覆盖CActiveRecord 的 afterFind() 方法并格式化其中的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

我建议您使用 virtual 属性,因为您同时拥有 unmodified$value和 modified $modifiedValue,一旦格式化完成,我们可以根据需要使用其中任何一个,而不需要在需要原始时重新格式化回原始。

于 2012-04-26T07:09:03.043 回答