public function paginate($data, $currentPage = 1, $limitPerPage = 10, $options = array()) { $paginator = new \Knp\Component\Pager\Paginator(); if ($currentPage == null) { $currentPage = 1; } if (!isset($options['searchParameter'])) { $options['searchParameter'] = 'search'; } // Temporary solution. We'll try to figure out a better one soon! $searchFields = isset($options['searchFields']) ? $options['searchFields'] : false; $searchValue = $this->app['request']->query->get($options['searchParameter'], false); if ($searchFields && !$data instanceof \Doctrine\ORM\QueryBuilder) { throw new \Exception('If you want to use search, you MUST use the QueryBuilder!'); } if ($searchFields && $searchValue) { if (is_string($searchFields)) { $searchFields = explode(',', $searchFields); } foreach ($searchFields as $searchFieldKey => $searchField) { $data->orWhere($searchField . ' LIKE ?' . $searchFieldKey)->setParameter($searchFieldKey, '%' . $searchValue . '%'); } } $pagination = $paginator->paginate($data, $currentPage, $limitPerPage, $options); return $pagination; }
public function paginate($data, $currentPage = 1, $limitPerPage = 10, $options = array()) { $paginator = new \Knp\Component\Pager\Paginator(); if ($currentPage == null) { $currentPage = 1; } $pagination = $paginator->paginate($data, $currentPage, $limitPerPage, $options); return $pagination; }
/** * Return real usable Paginator instance given the definition type * * @param Paginator $paginator Paginator * @param string $parameterType Parameter type * @param int $limitPerPage * @param int $page * * @return mixed Paginator instance */ public function decidePaginatorFormat(Paginator $paginator, $parameterType, $limitPerPage, $page) { if ('Pagerfanta\\Pagerfanta' === $parameterType) { $paginator = new Pagerfanta(new DoctrineORMAdapter($paginator->getQuery())); $paginator->setMaxPerPage($limitPerPage); $paginator->setCurrentPage($page); } if ('Knp\\Component\\Pager\\Pagination\\PaginationInterface' === $parameterType) { $knp = new \Knp\Component\Pager\Paginator(); $paginator = $knp->paginate($paginator->getQuery(), $page, $limitPerPage); } return $paginator; }