public function execute(Request $request) { $options = $this->config->getOptions(); $routes = $this->config->getRoutes(); $config = $this->config->getActionConfig(); $filterActive = false; $criteria = $config['default_criteria']; $form = null; $formView = null; if ($config['filter_enabled']) { /** @var FormInterface $form */ $form = $config['filter_form']; if ($request->query->has($form->getName())) { $filterActive = true; $form->submit((array) $request->query->getIterator()[$form->getName()]); $criteria = array_merge($criteria, $this->createFilterCriteria($form)); } $formView = $form->createView(); } $queryBuilder = $this->getEntityService()->getFinder()->find($criteria, $config['sort'])->getQueryBuilder(); if (is_callable($config['query_builder'])) { $config['query_builder']($queryBuilder); } $paginator = new DoctrinePaginator($queryBuilder); $paginator->configureFromRequestParams($request->query->all()); $this->getTable()->setData($paginator); $viewVars = array_merge(array('table' => $config['table']->createView(), 'filterActive' => $filterActive, 'form' => $formView, 'config' => $this->config, 'options' => $options, 'routes' => $routes, 'action' => $config), $options['view_vars']); return $this->templating->renderResponse($config['template'], $viewVars); }
/** * @param int $page * @param int|null $pageSize * @return DoctrinePaginator */ public function getPaginator($page = 1, $pageSize = 15) { $paginator = new DoctrinePaginator($this->queryBuilder); $paginator->configure($page, $pageSize); return $paginator; }