2008-09-29 5 views
12

Lors de l'utilisation de l'assistant paginateur dans les vues cakephp, il ne se souvient pas des parties de l'URL qui sont personnalisées pour mon utilisation.Pourquoi le paginateur ne se souvient-il pas de mes paramètres personnalisés quand je vais à la page 2?

Par exemple:

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

ici modérateurs est un paramètre qui me permet de filtrer par ce type. Mais le fait d'appuyer sur un lien de pagination n'inclura pas ce lien.

Répondre

4

Pour ajouter à la réponse d'Alexander Morland ci-dessus, il est bon de rappeler que la syntaxe a changé dans CakePHP 1.3 et est maintenant:

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

Ceci est décrit plus loin dans la section pagination in views du livre CakePHP.

11

Le secret ajoute cette ligne à votre vue:

$ paginator-> Options (array ('url' => $ this-> passedArgs));

(j'ai créé cette question et la réponse, car il est beaucoup posé la question et je continue d'avoir à creuser la réponse car je ne peux pas me le rappelle.)

0

$ this-> passedArgs est la meilleure façon de faire ceci de la vue.

0

Vous m'avez sauvé! Cela m'a beaucoup aidé, merci.

J'avais besoin d'un moyen de transmettre les paramètres que j'avais initialement envoyés via post ($ this-> data) au composant de pagination, afin que ma requête personnalisée continue à les utiliser.

Voici ce que je faisais.

sur moi, je mets

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

avant $ paginator-> prev ('< < précédent' stuff

Faire cela fait la prochaine lien 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 obtenir les paramètres et les mettre dans les $ this-> data donc ma fonction continuerait comme d'habitude:

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

Et voilà. La pagination fonctionne avec ma requête personnalisée. :)

0

Les options ici sont une bonne avance ... Vous pouvez également vérifier pour plus d'informations sur CakePHP à cakephp.org/view/166/Pagination-in-Views pagination

-1

Avec cette param « url » vous ne pouvez mettre votre chaîne préférée avant la pagination de chaîne dans url ..

si j'utilise cette tecnique:

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

Je ne pouvez utiliser que:

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

et Cake a perdu mes paramètres get

Avez-vous une alternative tecnique?

+1

s'il vous plaît ne postez pas une question comme une réponse .. –

+0

ne pas passer les paramètres que $ _GET [] ... votre URL devrait être quelque chose comme ... url/controller/action/par1: val1/par2: val2 – Yashvit

Questions connexes