Perché il paginatore non ricorda i miei parametri personalizzati quando vado a pagina 2?

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

  •  02-07-2019
  •  | 
  •  

Domanda

Quando si utilizza l'helper paginator nelle viste cakephp, non ricorda parti dell'URL personalizzate per il mio utilizzo.

Ad esempio:

http://example.org/users/index/moderators/page:2/sort:name/dir:asc

qui moderatori è un parametro che mi aiuta a filtrare per quel tipo. Ma premendo un link paginator non includerà questo link.

È stato utile?

Soluzione

Per aggiungere alla risposta di Alexander Morland sopra, vale la pena ricordare che la sintassi è cambiata in CakePHP 1.3 e ora è:

$this->Paginator->options(array('url' => $this->passedArgs));

Questo è ulteriormente descritto nella impaginazione nelle viste sezione del libro CakePHP.

Altri suggerimenti

Il segreto sta aggiungendo questa riga alla tua vista:

$ paginator - GT &; Opzioni (& Array ( 'url' = gt; $ this - gt &; PassedArgs));

(Ho creato questa domanda e rispondo perché è una domanda molto frequente e continuo a dover scavare la risposta poiché non riesco a ricordarla.)

$ this - > ;passArgs è il modo preferito per farlo dalla vista.

Mi hai salvato! Questo mi ha aiutato molto, grazie.

Avevo bisogno di un modo per passare i parametri che avevo originariamente inviato per posta ($ this - > data) al componente di paging, quindi la mia query personalizzata avrebbe continuato a usarli.

Ecco cosa ho fatto:

a mio avviso l'ho messo

$paginator->options(array('url'=>$this->data['Transaction']));

prima del $ paginator - > prev ('< < Precedente' roba.

In questo modo il collegamento successivo sul paginatore è stato reso come " ... / Pagina: 1 / start_date: 2000-01-01% 2000: 00: 00 / END_DATE: 3000-01-01% 2023: 59: 59 / payments_recieved: & 1 quot;

Quindi sul mio controller ho dovuto solo ottenere i parametri e inserirli nei dati $ this - > in modo che la mia funzione continuasse come al solito:

foreach($this->params['named'] as $k=>$v)
{
    /*
     * set data as is normally expected
     */
    $this->data['Transaction'][$k] = $v;
}

E questo è tutto. Il paging funziona con la mia query personalizzata. :)

Le opzioni qui sono un buon vantaggio ... Puoi anche controllare per maggiori informazioni sulla paginazione di cakePHP su cakephp.org/view/166/Pagination-in-Views

Con quel parametro 'url' puoi solo mettere la tua stringa preferita prima dell'impaginazione della stringa in url ..

se uso questa tecnica:

$urlpagin = '?my_get1=1&my_get2=2';
$paginator->options = array('url'=>$urlpagin);

Ottengo solo:

url/controller/action/?my_get1=1&my_get2=2/sort:.../...

e Cake ha perso i miei parametri personali

Hai una tecnica alternativa?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top