Example #1
0
 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);
 }
Example #2
0
 /**
  * @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;
 }