Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou com um problema ao utilizar o paginator.
Meu objetivo é criar uma função search que retorna os logins que possuem aquela string passada.
Eu dou search no form, ele manda o login pelo $this->data, ae eu pego o login passado e do um findAll e seto ele. O view do search coloca os dados e le os dados setados. O problema surge quando eu mando ordenar por otro tipo, ou quando clico no previous ou next, ele pega o $this->data vazio. Não tem como preservar ele ? Quando eu clico nestes links ele chama a função search denovo, o que exatamente ele ta fazendo ?
No controller o search está assim:
function search() {
$value = '%'.$this->data['User']['login'].'%';
$data = $this->paginate('User', array('User.login LIKE' => $value));
$this->set('logins', $data);
}
No view está:
<h2> Search </h2>
<?php
echo $this->Form->create('User', array('action'=>'search'));
echo $this->Form->input('User.login', array('label'=>'Login', 'type' => 'text'));
echo $this->Form->end('Search');
?>
<hr>
<table>
<tr>
<th><?php echo $this->Paginator->sort('Login', 'login'); ?></th>
<th><?php echo $this->Paginator->sort('Email', 'email'); ?></th>
</tr>
<?php foreach($logins as $login): ?>
<tr>
<td><?php echo $html->link($login['User']['login'], array('action'=>'view', $login['User']['login'])); ?> </td>
<td><?php echo $login['User']['email']; ?> </td>
</tr>
<?php endforeach; ?>
</table>
Você pode adicionar por get nas opções de paginação: