4

我需要在 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”。

4

2 回答 2

10

你快到了,在你的列数组中,你可以在name数据提供者中使用模型属性的参数,而不是自定义列,你可以header像这样使用:

'columns'=>array(
    ...
    array(
        'header' => 'test',
        'value' => '"testtest"', 
    ),
    ...
)
于 2013-01-08T13:36:33.730 回答
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();
    }
    ---
于 2013-12-14T04:34:20.223 回答