如何在Yii中使用CGridView排除CActiveRecord属性?

时间:2015-06-19 14:47:47

标签: php yii cgridview yii-cactiverecord cactiverecord

在Yii 1.1应用程序中,我使用CGridView显示数据表。

$dataProvider = $model->search();
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'my-grid',
    'dataProvider' => $dataProvider,
    'filter' => $model,
    'columns' => array(
        'id',
        'user.firstname',
        'user.lastname',
        'user.email',
        'type',
        'foo', // <-- on-the-fly added attribute
        'bar', // <-- on-the-fly added attribute
        ...
    ),
));

Curretly模型表(idtype)的所有列,甚至是动态添加的属性(foobar)都会获得过滤器输入字段。 (其他属性的过滤器不起作用。)

我想只为某些字段设置过滤器,例如: idtipe如何仅启用我需要的过滤器/禁用我不需要的过滤器?

1 个答案:

答案 0 :(得分:0)

这是一个解决方案,看起来像是一种解决方法 - 只需明确定义未过滤的属性,并将每个filter参数设置为false

...
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'my-grid',
    'dataProvider' => $dataProvider,
    'filter' => $model,
    'columns' => array(
        'id',
        ...
        'type',
        array(
            'name' => 'foo',
            'filter' => false,
        ),
        array(
            'name' => 'bar',
            'filter' => false,
        ),
        ...
    ),
));

它有效,但我认为应该有更优雅的解决方案......