Criando uma paginação simples com CakePHP
Outubro 3, 2007 – 9:52 amEste 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. ![]()
One Response to “Criando uma paginação simples com CakePHP”
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