Pages

Subscribe:

Ads 468x60px

Labels

10/03/2014

Paginação no CakePHP 2.x - $paginate

Boa noite a todos!

Vamos falar hoje sobre paginação de resultados no Framawork CakePHP 2.4.5, que é a versão usada neste tutorial.

O CakePHP já possui internamente um recurso para paginar sua aplicação e usá-lo veremos que é muito simples e fácil.

O principio é bem simples, podemos começar definindo um padrão de linhas a serem exibidas em todas as listagens alterando o arquivo:
  -> \app\Controller\AppController.php
Adicionamos as seguintes linhas:
--------------------------------------------------------------------------------------
class AppController extends Controller {
   
  //adiciona o atributo $paginate definindo o limite de paginas padrão
   public $paginate = array(
        'limit'=>5,
    );

}
--------------------------------------------------------------------------------------

Feito isso passamos para o controlador especifico de sua aplicação, por exemplo:

--------------------------------------------------------------------------------------
  public function index() {
        $this->Frequencia->recursive = 0;
        //ordena a coluna padrão que precisar
        $this->paginate['Frequencia']['order'] = array('Frequencia.id' => 'desc');
        //redefine a quantidade
         $this->paginate['Frequencia']['limit'] = 5;
           
        $this->set('frequencias', $this->paginate());
    }
--------------------------------------------------------------------------------------

E agora vamos mostrar na View (\app\View\Frequencias\index.ctp) o resultado do que vai ser paginado:
--------------------------------------------------------------------------------------
 <table cellpadding="0" cellspacing="0">
<tr>
    <th><?php echo $this->Paginator->sort('id'); ?></th>
    <th><?php echo $this->Paginator->sort('disciplina_id'); ?></th>
    <th><?php echo $this->Paginator->sort('frequentou'); ?></th>
    <th><?php echo $this->Paginator->sort('created'); ?></th>
    <th><?php echo $this->Paginator->sort('modified'); ?></th>
    <th class="actions"><?php echo __('Actions'); ?></th>
</tr>
<table cellspacing="0" cellpadding="0">
    <?php
         $tableHeaders = $this->Html->tableHeaders(array(
            $this->Paginator->sort('id', 'ID'),
            $this->Paginator->sort('disciplina_id', 'Disciplina'),
            $this->Paginator->sort('frequentou'),
            $this->Paginator->sort('created')
         ));
         echo $tableHeaders;
         $rows = array();
         foreach($frequencias as $linha){
            $rows[] = array(
               $linha['Frequencia']['id'],
               $linha['Frequencia']['disciplina_id'],
               $linha['Frequencia']['frequentou'],
               $linha['Frequencia']['created'],
            );
         }
       
         echo $this->Html->tableCells($rows);
         echo $tableHeaders;
     ?>
</table>
<div class="paging">
   <?php
      //echo $this->Paginator->numbers();
      echo $this->Paginator->prev('Anterior', null, null, array('class' => 'disable'));
      echo $this->Paginator->next('Proximo', null, null, array('class' => 'disable'));
    ?>
</div>
--------------------------------------------------------------------------------------

Se testarem em uma aplicação real verão de funciona perfeitamente, um abraço e até a próxima.

0 comentários:

Postar um comentário

Todos os comentários serão moderados e postados um tempo depois, comentários ofencivos serão deletados.