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.
Assinar:
Postar comentários (Atom)
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.