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

ymdaylpp  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(161)

在页脚中输入自定义列值的总和

网格视图代码

$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);
    }

1.第二列的值是计算用户费用。
1.在页脚中,用户费用值的总和得到了错误的总和。它给出了用户ID的总和。而ID是表列名。
1.如何获得用户费用列值的总和

jm2pwxwz

jm2pwxwz1#

请尝试使用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'),
),

有关更多信息,请查看special variables in Yii

相关问题