Yii1 CGridView-页脚中自定义列值的总和

Yii1 CGridView-页脚中自定义列值的总和,yii,cgridview,Yii,Cgridview,我需要页脚中自定义列值的总和 网格视图代码 $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'booking-grid', 'dataProvider'=>$model->search(), 'columns'=>array( array( 'name'=>'name', 'header'=>'U

我需要页脚中自定义列值的总和

网格视图代码

$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'booking-grid',
    'dataProvider'=>$model->search(),
    'columns'=>array(
         array(
             'name'=>'name',
             'header'=>'User Name',
             'value'=>'$data->booking_id',
             'filter'=>false,
             'footer'=>'Total',
             'footerHtmlOptions'=>array('class'=>'grid-footer'),
         ),
         array(
             'name'=>'id',
             'header'=>'User Fee',
             'value'=> array($model,'GetUserFee'),
             'filter'=>false,
             'footer'=>'' . $model->getTotal($model->search()->getData(), 'id'),
             'footerHtmlOptions'=>array('class'=>'grid-footer'),
         ),
    ),
));
获取总数

public function getTotal($records,$colName){        
        $total = 0.0;

        if(count($records) > 0){
            foreach ($records as $record) {
                    $total += $record->$colName;
            }
        }
        return number_format($total,2);
    }
  • 第二列值是计算用户费用

  • 在页脚中,用户费用值的总和获取错误的总和。它给出了用户ID的总和。id是表的列名

  • 如何获取“用户费用”列值的总和


  • 尝试使用CGridView创建的
    $data
    变量,而不是使用
    id
    的文字表示,该变量实际上是当前在每个CGridView迭代中处理的
    $model
    中的当前记录

    您的代码将是:

    array(
        'name'=>'id',
        'header' => 'User Fee',
        'type' => 'raw',
        'value' => '$data->id',
        'filter' => false,
        'footer' => '$model->getTotal($data)',
        'footerHtmlOptions' => array('class'=>'grid-footer'),
    ),
    
    请注意,
    type
    属性的值设置为
    raw

    您甚至可以使用PHP函数并向其传递
    $data
    变量,如下所示:

    array(
        'name'=>'id',
        'header' => 'User Fee',
        'type' => 'raw',
        'value' => function ($data) { ... handle $data how you like ... }
        'filter' => false,
        'footer' => '$model->getTotal($data)',
        'footerHtmlOptions' => array('class'=>'grid-footer'),
    ),
    

    有关更多信息,请查看

    getTotal方法的外观如何?