public function renderDefault() { $articles = $this->articlesDao->fetch(new ArticlesQuery()); $articles->applyPaginator($this['vp']->paginator); $this->template->articles = $articles; } protected function createComponentVp() { return new VisualPaginator; } . It automatically counts the query, passes the count of results to paginator and then reads the offset from paginator and applies it to the query so you get the correct results.
Author: Filip Procházka (filip@prochazka.su)
Inheritance: extends Nette\Object, implements Countable, implements IteratorAggregate
示例#1
0
 public function render()
 {
     $template = $this->getTemplate();
     $template->setFile(__DIR__ . '/overview.latte');
     $this->resultSet->applyPaginator($this['vs']->getPaginator(), $this->pagesPerPage);
     $this->pages = $this->resultSet->toArray();
     $template->pages = $this->pages;
     $template->pagesCount = count($this->pages);
     $template->render();
 }
 public function render()
 {
     $template = $this->getTemplate();
     $this->switchTemplateByMessagesType($template);
     $this->resultSet = $this->messagesHandler->getResultSet();
     $paginator = $this['paginator']->getPaginator();
     $this->resultSet->applyPaginator($paginator, 10);
     $messages = $this->resultSet->toArray(AbstractQuery::HYDRATE_ARRAY);
     $template->messages = $messages;
     $template->numberOfMessages = $paginator->getItemCount();
     $template->render();
 }
示例#3
0
 /**
  * @param array $criteria
  * @param array $orderBy
  * @param null $limit
  * @param null $offset
  * @return \ArrayIterator
  */
 public function findForApi(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 {
     $query = $this->dao->createQueryBuilder('p')->whereCriteria($criteria)->autoJoinOrderBy((array) $orderBy)->leftJoin('p.tags', 'tt')->addSelect('tt')->getQuery();
     $resultSet = new Kdyby\Doctrine\ResultSet($query);
     return $resultSet->applyPaging($offset, $limit)->getIterator(Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
 }
示例#4
0
 /**
  * @return \ArrayIterator
  */
 public function findBy(array $criteria, array $orderBy = NULL, $limit = NULL, $offset = NULL)
 {
     $query = $this->dao->createQueryBuilder('p')->whereCriteria($criteria)->autoJoinOrderBy((array) $orderBy)->leftJoin('p.tags', 'tt')->addSelect('tt')->getQuery();
     $resultSet = new Kdyby\Doctrine\ResultSet($query);
     return $resultSet->applyPaging($offset, $limit)->getIterator();
 }
示例#5
0
 /**
  * @param \Kdyby\Persistence\Queryable $repository
  * @param ResultSet $resultSet
  * @param \Doctrine\ORM\Tools\Pagination\Paginator $paginatedQuery
  * @return integer
  */
 public function count(Queryable $repository, ResultSet $resultSet = NULL, Paginator $paginatedQuery = NULL)
 {
     if ($query = $this->doCreateCountQuery($repository)) {
         return (int) $this->toQuery($query)->getSingleScalarResult();
     }
     if ($this->lastQuery && $this->lastQuery instanceof NativeQueryWrapper) {
         $class = get_called_class();
         throw new NotSupportedException("You must implement your own count query in {$class}::doCreateCountQuery(), Paginator from Doctrine doesn't support NativeQueries.");
     }
     if ($paginatedQuery !== NULL) {
         return $paginatedQuery->count();
     }
     $query = $this->getQuery($repository)->setFirstResult(NULL)->setMaxResults(NULL);
     $paginatedQuery = new Paginator($query, $resultSet ? $resultSet->getFetchJoinCollection() : TRUE);
     $paginatedQuery->setUseOutputWalkers($resultSet ? $resultSet->getUseOutputWalkers() : NULL);
     return $paginatedQuery->count();
 }
示例#6
0
 public function filterResultSet(Kdyby\Doctrine\ResultSet $resultSet)
 {
     $resultSet->applyPaginator($paginator = $this->getPaginator());
     $this->page = max(1, min($paginator->getPageCount(), (int) $this->page));
 }