/** * @param array $entities * @param PaginationData $paginationData * @param array $additionalData * * @return Closure */ public function getPagination(array $entities, PaginationData $paginationData, array $additionalData = null) { if (is_null($entities)) { $entities = array(); } if (is_null($additionalData)) { $additionalData = array(); } $pagination = new Pagination($entities, $paginationData->getTotalItemsCount()); $pagination->setCurrentPage($paginationData->getPageIndex()); $pagination->setPageRange($paginationData->getPageRange()); $pagination->setPageSize($paginationData->getPageSize()); $twig_env = $this->twig; $twig_template = $this->template; $pagination->renderer = function ($data) use($twig_env, $twig_template, $additionalData) { //return var_export($data, true); // common errors to check: is $twig_template file present? //return $twig_template; try { return $twig_env->render($twig_template, array_merge($data, $additionalData)); } catch (\Exception $e) { return $e->getMessage(); } }; return $pagination; }
/** * @param PaginationData $paginationData * @param array $additionalData * * @return Closure */ public function getPageSizeSelector(PaginationData $paginationData, array $additionalData = null) { if (is_null($additionalData)) { $additionalData = array(); } $pagesizeselector = new PageSizeSelector(); $pagesizeselector->setSizes($this->sizes); $pagesizeselector->setCurrentSize($paginationData->getPageSize()); $twig_env = $this->twig; $twig_template = $this->template; $pagesizeselector->renderer = function ($data) use($twig_env, $twig_template, $additionalData) { //return var_export($data, true); // common errors to check: is $twig_template file present? //return $twig_template; try { return $twig_env->render($twig_template, array_merge($data, $additionalData)); } catch (\Exception $e) { return $e->getMessage(); } }; return $pagesizeselector; }
/** * Reads sort direction. * * @param string $name * @param string $default_direction * * @return string */ public function getSortDirection($name = 'sort', $default_direction = 'asc') { $sort_direction = null; $sort = ''; // process request if ($this->request->query->has($name)) { $sort = $this->request->query->get($name); } $sort_array = explode('.', $sort); if (is_array($sort_array)) { if (count($sort_array) > 1) { $sort_direction = strtolower($sort_array[1]) == 'desc' ? 'desc' : 'asc'; } } // read / write page size $sort_direction = $this->register('sort_direction', 's', $sort_direction); // if not value returned, use default if (trim($sort_direction) == '') { $sort_direction = $default_direction; } // update data $this->pagination_data->setSortDirection($sort_direction); return $sort_direction; }