O componente Zend_Paginator simplifica bastante a paginação de dados e fornece Adapters para suportar várias fontes de dados (objetos Zend_Db, arrays, etc). O FernandoMantoan_Paginator_Adapter_Doctrine foi criado para ser um Zend_Paginator_Adapter que fornece paginação para os objetos QueryBuilder do Doctrine 2.

Configuração

O primeiro passo é baixar o componente para o seu projeto:

git clone https://github.com/fernandomantoan/zf1-doctrine2-paginator-adapter

Basta copiar a pasta library/FernandoMantoan para a pasta library do seu projeto Zend Framework, e adicionar no application/configs/application.ini as seguintes linhas:

autoloaderNamespaces[] = FernandoMantoan

Uso

O Adapater necessita de um objeto QueryBuilder, para construir as consultas para contagem das páginas e paginação. O exemplo a seguir cria um QueryBuilder:

$queryBuilder = $entityManager->createQueryBuilder();
$queryBuilder->select('c')
             ->from('Entity\Contacts')
             ->orderBy('c.birthdate');

Tendo o objeto QueryBuilder criado, basta instanciar o Adapter e o Zend_Paginator:

$adapter = new FernandoMantoan_Paginator_Adapter_Doctrine($queryBuilder);
$paginator = new Zend_Paginator($adapter);
$paginator->setCurrentPageNumber($currentPage)
          ->setItemCountPerPage(10);

Próximos Passos

O componente é bem simples e direto, foi criado para a utilização em um projeto e para suprir as necessidades do mesmo. Quem tiver interesse em contribuir, sugerir funcionalidades ou reportar bugs, basta acessar no Github, toda contribuição é bem-vinda.