cakephp - paginatecount - ¿Por qué el paginador no recuerda mis parámetros personalizados cuando voy a la página 2?
paginator cakephp (6)
$ this-> passedArgs es la forma preferida de hacer esto desde la vista.
Al usar el ayudante de paginador en las vistas de CakePHP, no recuerda partes de la URL que son personalizadas para mi uso.
Por ejemplo:
http://example.org/users/index/moderators/page:2/sort:name/dir:asc
aquí moderadores es un parámetro que me ayuda a filtrar por ese tipo. Pero presionar un enlace de paginador no incluirá este enlace.
¡Me salvaste! Esto me ayudó mucho, gracias.
Necesitaba una forma de pasar los parámetros que originalmente envié por correo ($ this-> data) al componente de paginación, por lo que mi consulta personalizada continuaría usándolos.
Aquí esta lo que hice:
en mi opinión puse
$paginator->options(array(''url''=>$this->data[''Transaction'']));
antes de $ paginator-> prev (''<< Anterior'').
Hacer esto hizo que el siguiente enlace en el paginador fuera "... / page: 1 / start_date: 2000-01-01% 2000: 00: 00 / end_date: 3000-01-01% 2023: 59: 59 / payments_recieved: 1 "
Luego en mi controlador solo tenía que obtener los parámetros y ponerlos en los datos $ this-> para que mi función continuara como siempre:
foreach($this->params[''named''] as $k=>$v)
{
/*
* set data as is normally expected
*/
$this->data[''Transaction''][$k] = $v;
}
Y eso es. La paginación funciona con mi consulta personalizada. :)
El secreto es agregar esta línea a tu vista:
$ paginator-> options (array (''url'' => $ this-> passedArgs));
(Creé esta pregunta y respuesta porque es una pregunta muy solicitada y sigo teniendo que buscar la respuesta porque no puedo recordarla).
Las opciones aquí son una buena pista ... También puedes buscar más información sobre la paginación de CakePHP en cakephp.org/view/166/Pagination-in-Views
Con ese param ''url'' solo puedes poner tu cadena preferida antes de la paginación de la cadena en la url ..
si uso esta técnica:
$urlpagin = ''?my_get1=1&my_get2=2'';
$paginator->options = array(''url''=>$urlpagin);
Solo obtengo:
url/controller/action/?my_get1=1&my_get2=2/sort:.../...
y Cake perdió mi get params
¿Tienes una técnica alternativa?
Para agregar a la respuesta anterior de Alexander Morland, vale la pena recordar que la sintaxis ha cambiado en CakePHP 1.3 y ahora es:
$this->Paginator->options(array(''url'' => $this->passedArgs));
Esto se describe con más detalle en la sección de paginación en vistas del libro de CakePHP.