2012-04-26 3 views
1

私はYiiのに働いていると私は次のような状況があります。Yiiでカスタムゲッターを実装していますか?

を私はMySQLのテーブルを持っている:

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

は、その後、私はこのテーブルからモデルを持っています。最後に、作成、一覧、管理、更新、表示のビューがあります。私は2進数でフォーマットさvalueフィールドを表示したい管理ビュービューで

。これを行う1つのオプションは、ビューadminファイルの番号をフォーマットすることができます。モデルにメソッドを作成し、ビューで何もする必要はありませんが、メソッド自体が数値の整形を解決する方法はありますか?

おかげ

答えて

3

あなたのモデルにafterFind() method of CActiveRecordをオーバーライドして、それにvalueフィールドの書式を設定することができます。

また、モデルの仮想属性を宣言してafterFind()メソッドで設定し、ビューでこの仮想属性を使用することもできます。

例(仮想属性を持つ):あなたは無修正の両方を持っているので、私は、仮想属性を使用することをお勧めいたしますでしょう$modelObject->valueModified

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; 
    } 
} 

次に、あなたは、このような仮想属性にアクセスすることができます$valueと変更された$modifiedValueは、フォーマットが完了したら、必要に応じて使用することができ、オリジナルが必要なときに元のフォーマットに戻す必要はありません。

関連する問題