在yii CGridView中调用函数
我是yii的新手,我正在调用CGridView中的函数来显示列中的值。但我也无法为其他列获取该值。我三次调用同一个函数TblPaid::model->alreadyPaidUpto。我想调用函数一次,然后再次使用该值。这是CGridView列的摘录。有人能给我一个提示吗在yii CGridView中调用函数,yii,Yii,我是yii的新手,我正在调用CGridView中的函数来显示列中的值。但我也无法为其他列获取该值。我三次调用同一个函数TblPaid::model->alreadyPaidUpto。我想调用函数一次,然后再次使用该值。这是CGridView列的摘录。有人能给我一个提示吗 array('name'=>'Paid upto this Date', 'value'=>'number_format((TblPaid::model()->a
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'),
),
首先,看看您调用此方法的方式,将其声明为静态方法可能更明智,例如:
public static function alreadyPaidUpto($arg1, $arg2) {}
但举例来说,你可以用$data模型的方法来实现,但我不知道是什么情况,因为这里没有太多的代码。例如,公共函数isAlreadyPaidUpTo$date,并像这样使用它$data->isAlreadyPaidUpTo$when
然后可以在方法中缓存该值:
public function isAlreadyPaidUpTo($date) {
static $result = null;
if ($result === null) {
$result = ? // query db, etc
}
return $result;
}
如果您展示一些真实的代码,我可能会更有帮助。您是否尝试过alreadyPaidUpto的结果?这个例子在JS中展示了这个想法,你当然可以在PHP中使用相同的概念。