1

私は yii の初心者です。列に値を表示するために CGridView で関数を呼び出しています。しかし、他の列でもその値を取得できませんでした。同じ関数を 3 回呼び出しています (TblPaid::model()->alreadyPaidUpto())。関数を一度呼び出して、値を再度使用したい。これは、CGridView 列の抜粋です。誰か教えてください。私にヒントをください?

            array('name'=>'Paid upto this Date',
            'value'=>'number_format((TblPaid::model()->alreadyPaidUpto($data->id, $this->grid->extraparam)),2)','htmlOptions'=>array('style'=>'text-align: right'),
            ),

            array('name'=>'Balance',
            'value'=>'number_format($data->amount-(TblPaid::model()->alreadyPaidUpto($data->id, $this->grid->extraparam)),2)','htmlOptions'=>array('style'=>'text-align: right'),
            ),

            array(
                    'header'=>'Running Balance',
                    'class'=>'RunningTotalColumn',
                    'value'=>'$data->amount-(TblPaid::model()->alreadyPaidUpto($data->id, $this->grid->extraparam))',
                    'htmlOptions'=>array('style'=>'text-align: right'),
            ),
4

1 に答える 1

0

staticまず、このメソッドを呼び出す方法を見てください。おそらく、メソッドとして宣言する方が賢明です。

public static function alreadyPaidUpto($arg1, $arg2) {}

ただし、たとえば、$dataモデルのメソッドを実行できます (ただし、ここにはコードがあまりないため、ケースはわかりません)。たとえばpublic function isAlreadyPaidUpTo($date)、このように使用します$data->isAlreadyPaidUpTo($when);

次に、メソッドで値をキャッシュできます。

public function isAlreadyPaidUpTo($date) {
    static $result = null;
    if ($result === null) {
        $result = ? // query db, etc
    }

    return $result;
}

本当のコードを見せていただければ、もっと役立つかもしれません。

于 2012-09-21T11:46:15.903 に答える