如何在YII中的CGridView中添加自定义列?

时间:2013-01-08 13:25:55

标签: yii

我需要在CGridView中添加一个列。

我用这个:

$this->widget('zii.widgets.grid.CGridView', array(
            'id'=>'user-grid',
            'dataProvider'=>$model->search(),
            'filter'=>$model,
            'pager' => array(
                'firstPageLabel' => '<<', 
                ),
            'columns'=>array(
                'username',
                'name',
                'email',
                'creationDate',
                array(
                        'class' => 'CButtonColumn',
                        'template' => '{change} {view}',
                        'buttons' => array(
                                        'change' => array(
                                                    'url'=> "'http://test.com/userservice/".$model->username."'",
                                        ),
                        ),

                ),
                array(
                    'name' => 'test',
                    'value' => 'testtest', 
                )
            ),
));

但我收到了错误:

  

未定义属性“User.test”。

2 个答案:

答案 0 :(得分:10)

你几乎就在那里,在你的列数组中,你会在数据提供者中使用name参数来表示模型的属性,而不是像你这样使用header的自定义列:

'columns'=>array(
    ...
    array(
        'header' => 'test',
        'value' => '"testtest"', 
    ),
    ...
)

答案 1 :(得分:4)

你可以像这样在CGridView上编写普通代码。

'columns'=>array(
                'username',
                'name',
                'email',
                'creationDate',
                'test',
                  ---
            ),

如果您将此类代码放在各自的型号上。

    ---
    public $test ; 
    public function afterFind() {
        $this->test = 'Test Variable' ; // put your custom code to reflect exact need 
        return parent::afterFind();
    }
    ---