/** * Creates view data for each filter. * * @param DocumentIterator $result * @param SearchRequest $request * * @return ViewData[] */ protected function getFiltersViewData(DocumentIterator $result, SearchRequest $request) { $out = []; /** @var FilterInterface[] $filters */ $filters = $this->container->all(); foreach ($filters as $name => $filter) { if ($filter instanceof ViewDataFactoryInterface) { $viewData = $filter->createViewData(); } else { $viewData = new ViewData(); } $viewData->setName($name); $viewData->setUrlParameters($this->composeUrlParameters($request, $filter)); $viewData->setState($request->get($name)); $viewData->setTags($filter->getTags()); $viewData->setResetUrlParameters($this->composeUrlParameters($request, $filter, [$name])); $out[$name] = $filter->getViewData($result, $viewData); } return $out; }