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;
 }
Exemple #2
0
 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;
 }