Criando uma paginação simples com CakePHP

Outubro 3, 2007 – 9:52 am

Este tutorial foi adaptado do site bakery. O objetivo é mostrar como criar uma página com paginação e possibilidade de ordernar o resultado. Por enquanto sem Ajax.

Então vamos a receita deste bolo.

1- Fazer o download de 3 arquivos e colocá-los nos locais indicados.

arquivo pagination.php
http://bakery.cakephp.org/articles/view/67
salvar em /app/controllers/components/pagination.php

arquivo pagination.php (é o mesmo nome mesmo)
http://bakery.cakephp.org/articles/view/68
salvar em /app/views/helpers/pagination.php

arquivo pagination.thtml
http://bakery.cakephp.org/articles/view/69
salvar em /app/views/elements/pagination.thtml

2- Criar ou modificar no nosso CONTROLE

No controle precisamos:
- Incluir o componente.
- Incluir o helper.
- chamar o método “init” antes do find.

<?php
class PostsController extends AppController
{
// Para garantir a compatibilidade como PHP4
var $name = ‘Posts’;

// Adicionado o componente
var $components = array (’Pagination’);

// Adicionado o helper
var $helpers = array(’Pagination’);

function index() {

//A variavel $criteria é onde entrará os filtros que você desejar.
$criteria=NULL;

list($order,$limit,$page) = $this->Pagination->init($criteria);

//Buscando os dados para a páginação
$data = $this->Post->findAll($criteria, NULL, $order, $limit, $page);

//Enviando o array para a view
$this->set(’data’,$data);
}
}
?>

3 - Criando ou modificando a nossa VIEW

To make use of pagination, include the element, and optionally modify your table headers to allow changing the sort order of results:

<h1>Paginação</h1>
<table>

<?php

// Inicializando as variáveis de paginação
$pagination->setPaging($paging);

$th = array (
$pagination->sortBy(’id’),
$pagination->sortBy(’title’),
$pagination->sortBy(’created’)
);

// Gerando a paginação com links para ordenação

// Criando a tabela com links para ordenação
echo $html->tableHeaders($th);

foreach ($data as $output)
{
$tr = array (
$output[’Post’][’id’],
$html->link($output[’Post’][’title’], “/Posts/View/{$output[’Post’][’id’]}”),
$output[’Post’][’created’]
);
echo $html->tableCells($tr,array(’class’=>’altRow’),array(’class’=>’evenRow’));
}
?>
</table>

4- Renderizando o elemento de paginação

<? echo $this->renderElement(’pagination’); ?>

Lembre-se: o elemento, /app/views/elements/pagination.thtml, precisa ser “temperado” ao seu gosto, ou melhor, ao gosto do seu site. Para isso utilize CSS ou o que quizer.

Feito isso o nosso bolo está pronto para ser servido.

No próximo post vamos preparar o recheio com Ajax. :-)

  1. One Response to “Criando uma paginação simples com CakePHP”

  2. Cara ficou mto bom o tutorial.
    Mas eu tenho uma duvida, aonde eu consigo mexer no link do cabecalho

    echo $html->tableHeaders($th);

    Pois o cabecalho esta indicando para
    localhost/cake/agendas/listar?sortBy=titulo&direction=DESC

    Quando na verdade meu projeto esta dentro da pasta
    localhost/cake/proj/agendas/listar?sortBy=titulo&direction=DESC

    By burno on Out 29, 2007

Post a Comment