duangai1916 2015-10-28 12:49
浏览 59
已采纳

如何在gridview中定义页脚的值

The footer is a string, if i put in 'value' works fine, but in footer give me a error:

trim() expects parameter 1 to be string, object given

GridView::widget([
        'dataProvider' => $dataProvider,
        'showFooter' => true,
        'footerRowOptions'=>['style'=>'font-weight:bold;text-decoration: underline;'],
        'columns' => [
            [
                'attribute' => 'XXX',
                'format' => 'currency',
                'value' => function($model) use ($anoFilter) {
                        return $model->getValorTotalParcelas($anoFilter);
                }, 
                'footer' => function($model) use ($anoFilter) {
                    return $model->getValorTotal($anoFilter);
                }
            ]
        ])

getValorTotal

public function getValorTotal($ano = null){
    $titulo = new FinlegadoTitulo();
    $valorTotalParcelas = $titulo->getValorTotalparcelasByClienteAndStatus(null,false,false,$ano);
    return $valorTotalParcelas;
}   

and

public function getValorTotalparcelasByClienteAndStatus($clienteId = null, $aberta = false, $vencida = false,$ano = null){
    $parcelas = FinlegadoTituloParcela::find()->joinWith(['finlegadoTitulo']);
    if ($clienteId) {
        $parcelas->andWhere(['finlegado_cliente_id' => $clienteId]);
    }
    if ($ano) {
        $parcelas->andWhere('YEAR(tbl_finlegado_titulo_parcela.data_pagamento_previsto) = ' . $ano);
    }
    if($aberta){
        $parcelas->andWhere(['tbl_finlegado_titulo_parcela.pago' => null]);
        $parcelas->andWhere("tbl_finlegado_titulo_parcela.status <> 'C'");
        $parcelas->andWhere("tbl_finlegado_titulo_parcela.status <> 'D'");
        if($vencida){
            $parcelas->andWhere('tbl_finlegado_titulo_parcela.data_pagamento_previsto < (NOW() - interval '.Yii::$app->params['delay_inadimplencia'].' day)');
        }else{
            $parcelas->andWhere('tbl_finlegado_titulo_parcela.data_pagamento_previsto >= NOW()');
        }
    } else {
        $parcelas->andWhere(['tbl_finlegado_titulo_parcela.pago' => true]);
    }

    return $parcelas->sum('valor_parcela');
}

The code above works fine

  • 写回答

1条回答 默认 最新

  • dpoppu4300 2015-10-28 18:07
    关注

    See this doc http://www.yiiframework.com/doc-2.0/yii-grid-datacolumn.html For footer you can't use the anomymous function but only the string value.

    then you can calculate yuor value out of the gridview and the assign to the footer

    $parkFooter = $model->getValorTotal($anoFilter);
    
     ........
    'columns' => [
            [
                'attribute' => 'XXX',
                'format' => 'currency',
                'value' => function($model) use ($anoFilter) {
                        return $model->getValorTotalParcelas($anoFilter);
                }, 
                'footer' => $parkFooter 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真