Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-03-2009 17:04:32

tomtom.b
Nouveau membre
Date d'inscription: 03-03-2009
Messages: 2

[Zend_Controller][1.7.2] Variables Get et Post

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

 

#2 04-03-2009 08:33:49

benji07
Membre
Lieu: Valence
Date d'inscription: 12-02-2008
Messages: 20

Re: [Zend_Controller][1.7.2] Variables Get et Post

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

 

#3 17-03-2009 00:06:47

Bouh
Nouveau membre
Date d'inscription: 04-09-2007
Messages: 2

Re: [Zend_Controller][1.7.2] Variables Get et Post

J'ai trouvé une solution. Comme j'ai cherché toute la soirée je vous met la réponse.

Code:

<?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 :

Code:

//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" :

Code:

//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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages