2012-05-02 2 views
2

J'utilise cakePHP et j'essaie d'obtenir le composant paginator pour passer les variables get, ou passesargs, lorsque vous cliquez à travers des pages différentes. J'ai une variété de différents sélecteurs d'entrée de recherche qui "filtre" les résultats renvoyés. Cela fonctionne à la première vue, mais au moment où je clique sur une page différente, elle affiche tous les résultats.cakePHP paginator ne passant pas passesargs

je la configuration suivante pour mon paginator:

// In my controller class: 
public $paginate = array('maxLimit' => 10, 'paramType' => 'querystring'); 

// Within my action method: 
$this->paginate = array('conditions' => array(...), 
         order => array('Model.field ASC'), 
         'limit' => 20 
); 

// Calling the paginator: 
$results = $this->paginate('Model'); 
$this->set(compact('results')); 

Dans mon fichier de vue:

<div class="paging"> 
<?php 
    echo $this->Paginator->prev('< ' . __('previous'), array(), null, array('class' => 'prev disabled')); 
    echo $this->Paginator->numbers(array('separator' => '')); 
    echo $this->Paginator->next(__('next') . ' >', array(), null, array('class' => 'next disabled')); 
?> 
</div> 

EDIT: De ma compréhension, il est préférable d'utiliser les passedArgs, mais je suis un peu incertain quant à la façon de le faire. Mon $ this-> passedArgs ne renvoie aucun résultat, donc je crée les paramètres passés dans mon exemple de contrôleur. J'ai aussi changé ma forme de Get Post:

$this->passedArgs["searchfield"] = $_POST["value"]; 

Il passe les passedArgs maintenant correctement dans la bande de pagination, mais je ne suis pas certain de la façon de construire maintenant le tableau des conditions d'échange. Dans la plupart des cas, les utilisateurs ne sélectionnent pas les valeurs par défaut, l'un des filtres est date et date, puis une zone de saisie de recherche, si je laisse les dates, il créera toujours les argumens et ne retournera aucun résultat. serait quelque chose comme:

http://localhost/site/controller/action/page:3/datefrom:0/dateto:0/searchFor:survey 

Une assistance?

Répondre

2

Vous pouvez passer par tous les paramètres de la vue avec:

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

ou affecter les params manuellement:

$this->Paginator->options(array('url' => array("0", "1"))); 

befor faisant écho à la paginator

Voir la CakePHP Cookbook pour d'autres exemples

+0

Salut @ Nebel54, merci pour votre suggestion. Je pense avoir trouvé le problème, c'est-à-dire que mon formulaire de filtre, ou formulaire de recherche, affiche uniquement les valeurs à GET, ainsi mon $ this-> passedArgs est vide. Pouvez-vous peut-être indiquer comment j'ai construit le passéArgs? – mauzilla

+0

Pouvez-vous publier à quoi ressemblent vos paramètres get? sont-ils construits comme/param1: vrai/param2: nom ou comme /? param1 = vrai & param2 = nom – Nebel54

+0

c'est/param1: valeur/param2: valeur, mais maintenant parce que tous les paramètres auront toujours des valeurs, il fera param1: 0/param2: possiblevalue/qui va casser la requête – mauzilla

Questions connexes