¿Por qué el paginador no recuerda mis parámetros personalizados cuando voy a la página 2?

StackOverflow https://stackoverflow.com/questions/147995

  •  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.

¿Fue útil?

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?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top