【问题标题】:Implementing a custom getter in Yii?在 Yii 中实现自定义 getter?
【发布时间】:2012-04-26 05:19:42
【问题描述】:

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

我有一个 MySQL 表:

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

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

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

谢谢

【问题讨论】:

    标签: php yii yii-cmodel


    【解决方案1】:

    您可以覆盖模型中的 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,一旦格式化完成,我们可以根据需要使用,而不必重新格式化回原来的当我们需要原件时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2016-10-28
      • 2010-11-09
      • 2012-03-17
      • 1970-01-01
      相关资源
      最近更新 更多