diff --git a/src/Forms/GridField/GridFieldFilterHeader.php b/src/Forms/GridField/GridFieldFilterHeader.php index fd3dd8ea996..ab0dd58e0aa 100755 --- a/src/Forms/GridField/GridFieldFilterHeader.php +++ b/src/Forms/GridField/GridFieldFilterHeader.php @@ -154,7 +154,7 @@ public function getActions($gridField) * If the GridField has a filterable datalist, return an array of actions * * @param GridField $gridField - * @return array + * @return void */ public function handleAction(GridField $gridField, $actionName, $arguments, $data) { @@ -163,14 +163,13 @@ public function handleAction(GridField $gridField, $actionName, $arguments, $dat } $state = $gridField->State->GridFieldFilterHeader; + $state->Columns = null; if ($actionName === 'filter') { if (isset($data['filter'][$gridField->getName()])) { foreach ($data['filter'][$gridField->getName()] as $key => $filter) { $state->Columns->$key = $filter; } } - } elseif ($actionName === 'reset') { - $state->Columns = null; } } @@ -193,12 +192,10 @@ public function getManipulatedData(GridField $gridField, SS_List $dataList) $filterArguments = $columns->toArray(); $dataListClone = clone($dataList); - foreach ($filterArguments as $columnName => $value) { - if ($dataList->canFilterBy($columnName) && $value) { - $dataListClone = $dataListClone->filter($columnName . ':PartialMatch', $value); - } - } - return $dataListClone; + $results = $this->getSearchContext($gridField) + ->getQuery($filterArguments, false, false, $dataListClone); + + return $results; } /** @@ -337,9 +334,11 @@ public function getSearchForm(GridField $gridField) $field->addExtraClass('stacked'); } + $name = $gridField->Title ?: singleton($gridField->getModelClass())->i18n_plural_name(); + $this->searchForm = $form = new Form( $gridField, - "SearchForm", + $name . "SearchForm", $searchFields, new FieldList() );