Filtrar los resultados de la Paginación en cakephp 1.2
Jueves, Enero 31st, 2008Nota: este post necesita conocimientos basicos del funcionamiento de cakephp, puede que no encuentres el post muy util no ser asi.
Con la entrada inminente de la nueva versión de cakephp se vienen muchos cambios, muchos de los que me he encontrado los intentare reseñar en el blog para futura referencias mia y si de paso ayuda a alguien mas pues mejor. Uno de esos cambios es la integración de la paginación a la clase base controller.
Cuando hacemos un bake (que si no lo haces deberias porque acorta el trabajo muchisimo) nos queda en el metodo index algo asi
function index() {
$this->Model->recursive = 0;
$this->set('flotas', $this->paginate());
}
Esto reemplaza al
$this->Model->findAll();
Ya en las vistas bake hace el trabajo de colocar las intrucciones de poder ordenar por columna, asi que no entrare en eso, el verdadero ‘problema’ es que tal sino quiero que sean todos los registros, sino que los quiero filtrar con alguna condición, cualquiera pensaria que la función paginate recibiria argumentos, por lo menos yo lo hice, pero NO es asi.
La solución a esto es una variable de la clase controlador que contiene las opciones de la paginación, por defecto viene asi
$this->paginate = array('limit' => 20, 'page' => 1);
A lo cual añadimos un arreglo con nuestras condiciones de igual manera que lo hariamos con find
$conditions = "id = 2 OR id = 3";
$this->paginate = array('limit' => 20, 'page' => 1,'conditions' => $conditions);
Y listo ya tenemos nuestra paginación personalizada ^^
PD: de igual manera si no sabian como filtrar los resultados de un find, ya lo saben, solo se agrega un arreglo ‘conditions’ a los parametros dela función (ven como cabe la confusión porque find si es por parametro y paginate no) que contenga la clausula WHERE, cualquier duda en los comentarios ![]()


