public function testGetIteratorShouldReturnAnArrayIteratorIfCurrentPageResultsIsAnArray() { $currentPageResults = array('foo', 'bar'); $this->setAdapterGetSlice($currentPageResults); $expected = new \ArrayIterator($currentPageResults); $this->assertEquals($expected, $this->pagerfanta->getIterator()); }
/** * {@inheritdoc} */ public function current() { return $this->pager->getIterator(); }
/** * Public pagination method with pagerfanta instance * * @\Mmoreram\ControllerExtraBundle\Annotation\Paginator( * class = { * "factory" = "Mmoreram\ControllerExtraBundle\Tests\FakeBundle\Factory\FakeFactory", * "method" = "createNonStatic", * "static" = false * }, * page = "~page~", * limit = "~limit~", * orderBy = { * { "x", "~field~", "~dir~", { * "1" = "ASC", * "2" = "DESC", * }} * } * ) * * @\Mmoreram\ControllerExtraBundle\Annotation\JsonResponse() */ public function paginatorPagerFantaAction(Pagerfanta $paginator) { return array('count' => $paginator->getIterator()->count()); }
public function getPagedCollection($page = 1, $limit = 10, $query = null, $sorting = null, $order = 'DESC') { $queryBuilder = $this->repository->createQueryBuilder('e'); $this->prepareJoinedQuery($queryBuilder); if ($query) { $this->createFilterQuery($queryBuilder, $query); } if ($sorting) { if (strpos($sorting, '.') === false) { $queryBuilder->addOrderBy(sprintf('e.%s', $sorting), $order); } else { $queryBuilder->addOrderBy($sorting, $order); } } $pagerAdapter = new DoctrineORMAdapter($queryBuilder); $pager = new Pagerfanta($pagerAdapter); $pager->setCurrentPage($page); $pager->setMaxPerPage($limit); return ['limit' => (int) $limit, 'page' => (int) $page, 'pages' => $pager->getNbPages(), 'total' => $pager->getNbResults(), 'data' => $pager->getIterator()->getArrayCopy()]; }