簡體   English   中英

如何從Yii中的CGridView過濾中排除CActiveRecord屬性?

[英]How to exclude a CActiveRecord property from filtering with CGridView in Yii?

在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
        ...
    ),
));

現在,模型表的所有列( idtype ),甚至即時添加的屬性( foobar )都將獲得過濾器輸入字段。 (其他屬性的過濾器不起作用。)

我只想為ed idtipe某些字段設置過濾器。 如何僅啟用所需的過濾器/禁用不需要的過濾器?

這是一個解決方法,看起來像一個變通方法-只需明確定義未過濾的屬性,並將每個參數的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,
        ),
        ...
    ),
));

它可行,但是我認為應該有一個更優雅的解決方案...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM