/** * @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; }
public function testPaginationRange() { $range = 10; // page navigatin window $this->GenerateDummyData(100); $p = new Pagination($this->dummy, count($this->dummy)); $p->setPageRange($range); $p->setItemNumberPerPage(10); $p->setCurrentPageNumber(5); // page index value ('values' for this page are being displayed) $r = $p->getPaginationData(); $this->assertTrue(max($r['pagesInRange']) - min($r['pagesInRange']) + 1 == $range); }
/** * Returns a pagination object * * @param array $entities * @param integer $entity_count * @param integer $current_page_index * @param integer $page_range * @param integer $page_size * @param array $additional_data * @return Pagination */ public function getPagination($entities, $entity_count, $current_page_index, $page_range, $page_size, $additional_data = null) { if ($entities != null && !is_array($entities)) { throw new \Exception('Pagination.getPagination: $entities is not an array'); } if ($entities == null) { $entities = array(); } if ($additional_data != null && !is_array($additional_data)) { throw new \Exception('Pagination.getPagination: $additional_data is not an array'); } if ($additional_data == null) { $additional_data = array(); } $pagination = new Paginator($entities, $entity_count); $pagination->setPageRange($page_range); $pagination->setItemNumberPerPage($page_size); $pagination->setCurrentPageNumber($current_page_index); $twig_env = $this->twig; $twig_template = $this->template; $pagination->renderer = function ($data) use($twig_env, $twig_template, $additional_data) { //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, $additional_data)); } catch (\Exception $e) { return $e->getMessage(); } }; return $pagination; }