2015-06-19 6 views
1

В приложении Yii 1.1 я показываю данные таблицы, используя CGridView.Как исключить свойство CActiveRecord для фильтрации с помощью CGridView в Yii?

$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 все столбцы на лету добавлены атрибуты модели таблицы (id, type) и даже (foo, bar) получить поле ввода фильтра. (Фильтры дополнительных свойств не работают.)

Я хочу иметь фильтры только для некоторых полей, e.d. id и tipe. Как включить только те фильтры, которые мне нужны/отключить фильтры, которые мне не нужны?

ответ

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

Это работает, но я думаю, должно быть более элегантное решение ...