Pourquoi la pagination ne se souvient-elle pas de mes paramètres personnalisés lorsque je passe à la page 2?

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

  •  02-07-2019
  •  | 
  •  

Question

Lors de l'utilisation de l'aide de pagination dans les vues cakephp, il ne se souvient pas des parties de l'URL qui sont personnalisées pour mon utilisation.

Par exemple:

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

ici les modérateurs sont des paramètres qui m'aident à filtrer selon ce type. Mais appuyer sur un lien de pagination n'inclura pas ce lien.

Était-ce utile?

La solution

Pour ajouter à la réponse d’Alexander Morland ci-dessus, il convient de rappeler que la syntaxe a été modifiée dans CakePHP 1.3 et est désormais:

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

Ceci est décrit plus en détail dans le pagination dans les vues du livre de CakePHP.

Autres conseils

Le secret consiste à ajouter cette ligne à votre vue:

$ paginator - > options (array ('url' = > $ this - > passÉrgs));

(J'ai créé cette question et sa réponse parce que c'est une question très posée et je continue à devoir chercher la réponse car je ne m'en souviens plus.)

$ this - > sharedArgs est le moyen recommandé pour le faire à partir de la vue.

Tu m'as sauvé! Cela m'a beaucoup aidé, merci.

Il me fallait un moyen de transmettre au composant de pagination les paramètres que j'avais initialement envoyés par la poste ($ this - > data), afin que ma requête personnalisée continue de les utiliser.

Voici ce que j'ai fait:

à mon avis, je mets

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

avant le $ paginator - > prev ('< < Previous').

Cela a rendu le lien suivant sur le paginateur comme " ... / page: 1 / start_date: 2000-01-01% 2000: 00: 00 / end_date: 3000-01-01% 2023: 59: 59 / payments_recieved: 1 "

Ensuite, sur mon contrôleur, je devais simplement obtenir les paramètres et les mettre dans les données $ this - > afin que ma fonction continue comme d'habitude:

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

Et c'est tout. La pagination fonctionne avec ma requête personnalisée. :)

Les options ici sont une bonne piste ... Vous pouvez également consulter pour plus d'informations sur la pagination de cakePHP à l'adresse cakephp.org/view/166/Pagination-in-Views

Avec ce paramètre 'url', vous ne pouvez mettre votre chaîne préférée avant la pagination de chaîne que dans l'URL ..

si j'utilise cette technique:

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

Je n'obtiens que:

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

et Cake a perdu mes paramètres d'obtention

Avez-vous une technique alternative?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top