在yii CGridView中调用函数

时间:2012-09-21 11:32:38

标签: yii

我是yii的新手,我在CGridView中调用一个函数来显示列中的值。但我也无法为其他列获得该值。我正在调用相同的函数三次(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'),
            ),

1 个答案:

答案 0 :(得分: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;
}

如果你展示了一些真实的代码,我可能会更有帮助。