Как исключить свойство CActiveRecord из фильтрации с CGridView в 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
...
),
));
Curretly все столбцы таблицы модели (id
, type
) и даже на лету добавленные атрибуты (foo
, bar
) получить поле ввода фильтра. (Фильтры дополнительных свойств не работают.)
Я хочу иметь фильтры только для некоторых полей, ред id
а также tipe
, Как я могу включить только те фильтры, которые мне нужны / отключить фильтры, которые мне не нужны?
1 ответ
Вот решение, которое выглядит как обходной путь - просто определите нефильтрованные свойства явно и установите 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,
),
...
),
));
Это работает, но я думаю, должно быть более элегантное решение...