Veja como fazer uma paginação de resultados com o CakePHP 1.2. Nesta paginação de resultados, você poderá definir o número de resultados por página, e quais campos deseja que tenham ordenação.
Este é o primeiro de três artigos, que falarão como fazer uma busca e paginar o resultado com o campo buscado, e como fazer uma busca de itens por letra inicial.
Espero que gostem!
Primeiro, vamos criar a base de dados:
CREATE TABLE clientes (<br /> id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,<br /> nome VARCHAR(120) NULL,<br /> sobrenome VARCHAR(120) NULL,<br /> email VARCHAR(150) NULL,<br /> site VARCHAR(150) NULL,<br /> PRIMARY KEY(id)<br />)<br />TYPE=InnoDB; Insira alguns registros nesta base de dados. Dê preferência para nomes diferentes, que comecem com letras diferentes, para que nosso exemplo funcione bem.
Vamos, agora, criar nosso controller:
clientes_controller.php<br /><?php<br />class ClientesController extends AppController<br />{<br /> var $name = 'Clientes';<br /> var $helpers = array('Html', 'Form'); // carregamos alguns helpers<br /> var $paginate = array('limit' => 15, 'page' => 1, 'order'=>array('nome'=>'asc'));<br /> // aqui definimos o limite de resultados por página, e a ordem da paginação<br /><br /> function index()<br /> {<br /> $this->Cliente->recursive = 0;<br /> $this->set('clientes', $this->paginate());<br /> // com este comando, geramos a paginação para página index<br /> }<br />}<br />?>Agora, montaremos o arquivo responsável pelo VIEW, ou a visualização desta paginação. Vamos criar o arquivo index.ctp, e salvá-lo dentro da pasta /app/views/clientes
index.ctp<br /><br /><div class="clientes index"><br /><h2>Clientes</h2><br /><p><br /><?php<br />echo $paginator->counter(array(<br />'format'<br />=> __('Pagina %page% de %pages%, mostrando %current% registros de um<br />total de %count%, iniciando no registro %start%, terminando em %end%',<br />true)));<br />// aqui contamos quantas páginas e registros existem para esta paginação, e exibimos na tela<br />?><br /></p><br /><table cellpadding="0" cellspacing="0"><br /><tr><br /> <th><?php echo $paginator->sort('Cod','id');?></th><br /> <th><?php echo $paginator->sort('nome');?></th><br /> <th><?php echo $paginator->sort('sobrenome');?></th><br /> <th><?php echo $paginator->sort('email');?></th><br /> <th><?php echo $paginator->sort('site');?></th><br /> <th class="actions">Ações</th><br /></tr><br /><?php<br />$i = 0;<br />foreach ($clientes as $cliente):<br /> $class = null;<br /> if ($i++ % 2 == 0) {<br /> $class = ' class="altrow"';<br /> }<br />?><br /> <tr<?php echo $class;?>><br /> <td><br /> <?php echo $cliente['Cliente']['id']; ?><br /> </td><br /> <td><br /> <?php echo $cliente['Cliente']['nome']; ?><br /> </td><br /> <td><br /> <?php echo $cliente['Cliente']['sobrenome']; ?><br /> </td><br /> <td><br /> <?php echo $cliente['Cliente']['email']; ?><br /> </td><br /> <td><br /> <?php echo $cliente['Cliente']['site']; ?><br /> </td><br /> <td class="actions"><br /> <?php echo $html->link(__('Ver', true), array('action'=>'view', $cliente['Cliente']['id'])); ?><br /> <?php echo $html->link(__('Editar', true), array('action'=>'edit', $cliente['Cliente']['id'])); ?><br /> <br /><?php echo $html->link(__('Excluir', true),<br />array('action'=>'delete', $cliente['Cliente']['id']), null,<br />sprintf(__('Voce tem certeza que deseja excluir o registro # %s?',<br />true), $cliente['Cliente']['id'])); ?><br /> </td><br /> </tr><br /><?php endforeach; ?><br /></table><br /></div><br /><div class="paging"><br /> <?php echo $paginator->prev('<< '.__('anterior', true), array(), null, array('class'=>'disabled'));?><br /> | <?php echo $paginator->numbers();?><br /> <?php echo $paginator->next(__('proxima', true).' >>', array(), null, array('class'=>'disabled'));?><br /></div><br /><div class="actions"><br /> <ul><br /> <li><?php echo $html->link(__('Novo Cliente', true), array('action'=>'add')); ?></li><br /> </ul><br /></div>Pronto, galera!







