Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Dans le cadre de pagination (Zend_Paginator) de résultats extraits d'une BDD, je souhaiterais arriver, à partir d'un lien de numéro de page, à rediriger vers la même page en renvoyant les paramètres GET et les paramètres POST en même temps.
Exemple :
Controller : journal
Action : index
Url : http://localhost/journal/index?page=1&date=03022009
Paramètres Get : 'page'=>'1' , 'date'=>'03022009'
Paramètres Post : 'search'=>'test' , 'num'=>'22'
En cliquant sur le numéro de page du Zend_Paginator, je voudrais retourner sur la même action en renvoyant tous les paramètres Get et Post.
Avez-vous une idée ?
Hors ligne
C'est impossible, ce que tu essaye de faire c'est une liste paginé avec des filtres ?
Pour ça le mieux c'est d'utiliser la session pour stocker tes paramètres en post
Hors ligne
J'ai trouvé une solution. Comme j'ai cherché toute la soirée je vous met la réponse.
<?php /** * Hérite de Zend_Paginator - Permet de définir des filtres supplémentaires à la pagination * @author jeremy lamit * */ class My_Paginator extends Zend_Paginator { protected $_filters = array(); /** * Permet de définir les filtres à appliquer à la pagination * @param $filtres array avec nom du parametre + value * @return none */ public function setFilters($filtres) { $this->_filters = $filtres; } /** * Réecrite afin de tenir compte de paramètre sup. (en plus de la page) * @see Zend_Paginator#getPages() */ public function getPages($scrollingStyle = null) { $this->_pages = parent::getPages($scrollingStyle = null); //on ajoute les filtres $this->_pages->filters = $this->_filters; return $this->_pages; } } ?>
Dans le controller on peut maintenant attribuer des valeurs à des filtres :
//ARGUMENTS A PASSER AUX LIENS if ($this->_getParam('secteur_id')){ $page->setFilters( array( 'secteur' => $this->_getParam('secteur_id',0) ) ); }
$page étant une instance de My_Paginator
Dans le template de pagination (exemple avec le lien "precedent" :
//recuperation des filtres $args = $this->filters; if (isset($this->previous)): //attention à la position des arguments suivant votre facon de router les urls $args = array_merge($args, array('page' => $this->previous)); ?> <a href="<?php echo $this->url($args); ?>" class="txt14_bleu"><span class="fleche">‹</span> Précédente</a>
Hésitez pas à me contacter si ca manque de détails.
Hors ligne
Pages: 1