2012-04-26 88 views
1

我用Yii的工作,我有以下的情況:在Yii中實現自定義getter?

我有一個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,一旦格式化完成,我們可以根據需要使用,而不需要在我們需要原始時重新格式化爲原始格式。