如何在gridview中定义页脚的值

时间:2015-10-28 12:49:13

标签: php gridview yii2

页脚是一个字符串,如果我输入'value'工作正常,但在页脚中给我一个错误:

  

trim()期望参数1为字符串,给定对象

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

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

上面的代码工作正常

1 个答案:

答案 0 :(得分:1)

查看此文档http://www.yiiframework.com/doc-2.0/yii-grid-datacolumn.html 对于页脚,您不能使用同名函数,只能使用字符串值。

然后你可以计算出gridview中的yuor值和分配到页脚

$parkFooter = $model->getValorTotal($anoFilter);

 ........
'columns' => [
        [
            'attribute' => 'XXX',
            'format' => 'currency',
            'value' => function($model) use ($anoFilter) {
                    return $model->getValorTotalParcelas($anoFilter);
            }, 
            'footer' => $parkFooter