Desenvolvimento - PHP
Criando uma paginação com CakePHP
Veja neste artigo como criar, em pouco tempo e de uma maneira bem simples, uma paginação de resultados usando o framework CakePHP.
por Thiago BelemOpa opa! Estou de volta
Tenho recebido algumas dúvidas sobre como usar/fazer paginação no CakePHP, e resolvi ensinar pra vocês como eu resolvo esse problema…
Você vai que precisamos de exatamente duas linhas pra fazer uma consulta paginada no CakePHP, e mais duas linhas pra mostrar os links de “pŕoximo” e “anterior”.
Você vai precisar de:
- CakePHP instalado e configurado (duh)
- Um model com alguns dados cadastrados no banco de dados (duh²)
- Boa vontade
- 5 minutos (ou menos)
Começando pelo Controller
O trabalho da paginação começa no Controller… Defina os parâmetros de busca (find) normalmente, como você sempre fez:
class NoticiasController extends AppController { /** * Lista as notícias utilizando paginação */ public function lista() { $options = array( 'fields' => array('Noticia.titulo', 'Noticia.resumo'), 'conditions' => array('Noticia.active' => true), 'order' => array('Noticia.created' => 'DESC'), 'limit' => 10 ); } }
Definido os parâmetros de busca, podemos atribuí-los ao atributo paginate do Controller e rodar a consulta no model Noticia:
class NoticiasController extends AppController { /** * Lista as notícias utilizando paginação */ public function lista() { $options = array( 'fields' => array('Noticia.titulo', 'Noticia.resumo'), 'conditions' => array('Noticia.active' => true), 'order' => array('Noticia.created' => 'DESC'), 'limit' => 10 ); $this->paginate = $options; // Roda a consulta, já trazendo os resultados paginados $noticias = $this->paginate('Noticia'); // Envia os dados pra view $this->set('noticias', $noticias); } }
E tá tudo pronto.. agora é só ir pra view mostrar essas notícias e colocar os links de paginação!
Paginação na View
Um exemplo básico (usando a tag article do HTML5) da listagem de notícias:
<article> <?php foreach($noticias AS $data): ?> <h1><?php echo $data['Noticia']['titulo'] ?></h1> <p><?php echo $data['Noticia']['resumo'] ?></p> <?php endforeach; ?> </article>
E por ultimo, a listagem dos links de paginação:
echo $this->Paginator->prev('« Mais novas', null, null, array('class' => 'desabilitado')); echo $this->Paginator->numbers(); echo $this->Paginator->next('Mais antigas »', null, null, array('class' => 'desabilitado'));
Na linha 1 e 3 nós mostramos os links para a próxima página e para a página anterior. Já na linha 2 nós mostramos aquela lista de números das páginas: 1, 2, 3, 4 cada uma com um link!
O PaginatorHelper tem muitas outras opções e customizações, não deixe de consultar a documentação .
Artigo originalmente publicado por Thiago Belem: Paginação no CakePHP