Filter only active attributes in gridview

When we do not want an attribute to be searched we do not define it in
the filter model, or mark it inctive in the scenario when we use the
original model.
GridView should not try to access the attribute then and automatically
not display the filter field.
This commit is contained in:
Carsten Brandt
2013-10-13 19:56:12 +02:00
parent 4050a4b211
commit 5ad8fe5f45

View File

@ -115,7 +115,9 @@ class DataColumn extends Column
{
if (is_string($this->filter)) {
return $this->filter;
} elseif ($this->filter !== false && $this->grid->filterModel instanceof Model && $this->attribute !== null) {
} elseif ($this->filter !== false && $this->grid->filterModel instanceof Model &&
$this->attribute !== null && $this->grid->filterModel->isAttributeActive($this->attribute))
{
if (is_array($this->filter)) {
$options = array_merge(array('prompt' => ''), $this->filterInputOptions);
return Html::activeDropDownList($this->grid->filterModel, $this->attribute, $this->filter, $options);