/** * Resolves tableHeaders and additional filters into a single array of * Zend ElementInterface forms * * @return ElementInterface[] */ protected function getFilterElements() { $elements = array(); // Get all filters that can be placed above a header foreach ($this->tableHeaders as $tableHeader) { $filter = $tableHeader->getFilter(); // Are you a extra configured filter, good we'll call you directly if (!is_null($filter->getInstance())) { $filterElement = $filter->getInstance()->getFilterElement(); $filterElement->setName('search[' . $filterElement->getName() . ']'); $elements[] = $filterElement; continue; } // No filter instance has been configured, create a new FormElement throughout the strategy resolver $dataType = $tableHeader->getDataType(); if ($this->tableModel->getPrefetchedValuesByName($tableHeader->getName())) { $dataType = "Array"; } $filterName = 'search[' . $filter->getName() . ']'; $element = $this->dataStrategyResolver->displayFilterForDataType($filterName, $dataType); $this->setElementCurrentValue($element, $tableHeader->getSafeName()); if ($dataType == "Array") { $this->setElementValues($element, $tableHeader->getName()); } $elements[] = $element; } // Append additional filters foreach ($this->additionalFilters as $filter) { $filterElement = $filter->getInstance()->getFilterElement($filter); $filterElement->setName('search[' . $filterElement->getName() . ']'); $elements[] = $filterElement; continue; } return $elements; }