¿Por qué el paginador no recuerda mis parámetros personalizados cuando voy a la página 2?
-
02-07-2019 - |
Pregunta
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.
Solución
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 más detalladamente en paginación en la sección de vistas del libro CakePHP.
Otros consejos
El secreto es agregar esta línea a su vista:
$paginator->options(array('url'=>$this->passedArgs));
(Creé esta pregunta y respuesta porque es una pregunta muy solicitada y sigo teniendo que desenterrar la respuesta ya que no puedo recordarla).
$ this - > passArgs es la forma preferida de hacer esto desde la vista.
¡Me salvaste! Esto me ayudó mucho, gracias.
Necesitaba una forma de pasar los parámetros que envié originalmente por correo ($ this - > data) al componente de paginación, por lo que mi consulta personalizada continuaría usándolos.
Esto es lo que hice:
en mi opinión pongo
$paginator->options(array('url'=>$this->data['Transaction']));
antes del $ paginator - > prev ('< < Previous' stuff.
Al hacer esto, el siguiente enlace en el paginador es como " ... / página: 1 / fecha_inicio: 2000-01-01% 2000: 00: 00 / fecha_final: 3000-01-01% 2023: 59: 59 / pagos_recibidos: 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 todo. La paginación funciona con mi consulta personalizada. :)
Las opciones aquí son una buena pista ... También puede consultar para obtener más información sobre la paginación de cakePHP en cakephp.org/view/166/Pagination-in-Views
Con ese parámetro 'url' solo puede poner su cadena preferida antes de la paginación de cadena en 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ó mis parámetros de obtención
¿Tiene una técnica alternativa?