¿Cómo hacer distintas paginaciones en el mismo controlador de cakePHP?
Posted by | Posted in CakePHP | Posted on 04-10-2010
0
Hoy explicaré cómo hacer dos paginaciones distintas dentro del mismo controlador. Tomaré un reciente ejemplo que tenía que hacer, en el cual debía mostrar los elementos cuyo valor “aceptado” se encontrara a 1 de 15 en 15, y que se encontraran ordenados por el número de votos que habían recibido y también tenía que mostrar aquellos cuyo valor aceptado fuera 0.

Los pasos seguidos fueron los siguientes:
1 – Incluir la siguiente variable global en el controlador.
var $paginate = array(
'conditions'=> array('Suitcase.aceptado'=>1),
'limit' => 15,
'order' => array(
'Suitcase.vote' => 'desc'
)
);
2 – Hacer uso de esta paginación en cada función del paginador que lo necesitara mediante la introducción de esta línea.
$this->set('cases', $this->paginate('Suitcase'));
3 – Y ahora el problema estaba en cómo hacer otra paginación sin afectar a la primera. Pues simplemente sustituyendo en la función(recordad que no es como antes que lo poníamos en la zona de variables globales del documento!!) la variable $this->paginate por la que en estos momentos necesitaba.
$this->paginate = array(
'conditions'=> array('Suitcase.aceptado'=>0),
'limit' => 15,
'order' => array(
'Suitcase.vote' => 'desc'
)
);
4 – Y llamándole de la misma forma.
$this->set('cases', $this->paginate('Suitcase'));



