1

私はYiiと協力していますが、次のような状況にあります。

MySQLテーブルがあります:

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

次に、このテーブルのモデルを取得します。そして最後に、作成、一覧表示、管理、更新、表示のビューがあります。

管理ビューとビュービューで、value2つの10進数でフォーマットされたフィールドを表示したいと思います。これを行うための1つのオプションは、ビュー管理ファイルで番号をフォーマットすることです。モデルでメソッドを作成し、ビューで何もする必要がない方法はありますが、メソッド自体が数値のフォーマットを解決しますか?

ありがとう

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

仮想属性を使用することをお勧めします。これは、変更されていない$valueものと変更されたものの両方があるためです$modifiedValue。フォーマットが完了すると、必要に応じてどちらかを使用でき、元の必要なときに元に再フォーマットする必要がありません。

于 2012-04-26T07:09:03.043 に答える