Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
bonsoir j'utilise un petit formulaire de recherche et Zend Paginator,
mais mon problème est que j'aimerai ajouter dans les urls de mes liens de paginations un paramètre
de recherche
exemple :
<< 1 2 3 >>
des que l'on va sur la page 2 = http://www.monsite.com/recherche/larecherche/page/2
j'ai voulu ajouter ce parametre dans mon fichier paginator.phtml , mais cela ne marche pas
exemple dans mon controlleur je tape ca
$parametres = $this->getRequest()->getParams();
$this->view->recherche =$parametres['recherche'];
et dans ma page paginator.phtml
pas moyen d'afficher
$this->recherche;
quelqu'un aurait une idée ??
Hors ligne
C'est le paramètre 'page' que tu veux et non pas recherche...
Hors ligne
page je l'ai , non le problème est que si je clique sur page 2 et qu'il n'y a pas de paramètre recherche, et ben il va m'afficher tous les resultats sans les filtrer avec le paramètre recherche
exemple je veux afficher tous les utilisateurs administrateurs.
on va m'afficher tous les administrateurs sur plusieurs pages, mais dès que je cliquerai sur la page 2 ben ils ne seront plus filtrés d'où le souhait de mettre dans l'url le parametre recherche
Hors ligne
Transmet la en sessions peut etre.
Hors ligne
Ben oui mais après comment je fais pour savoir quand je dois vider cette variable de session ??
parce que imaginons que je change de page après avoir fait une recherche , puis je revienne sur cette page de recherche les informations seront tjrs filtrées ?
ben je vais voir, je vais essayer avec une variable de session on verra bien ^^
Hors ligne
Je suppose que tu as un fichier pagination.phtm et que tu génères tes urls comme ca :
<a href="<?= $this->url(array('page' => $this->first)); ?>">
(si tu as copié la doc du ZF)
Si tu veux rajouté un paramètre, tu rajoutes un élément dans ton tableau :
<a href="<?= $this->url(array('page' => $this->first, 'truc' => 'machin')); ?>">
Hors ligne
oui ça je sais mais pour faire passer mon champs recherche : du controlleur à la vue ça ne marche pas,
j'ai essayé $this->view->recherche = $parametres['recherche'];
ou encore on sait jamais :p
$paginator->recherche = $parametres['recherche'];
mon lien est comme ça http://monsite.com/controlleur/action/recherche/id
je suis obligé de récupérer les parametres dans le controlleur
$parametres = $this->getRequest()->getParams();
et d'essayer de le faire passer à la vue
Hors ligne
Voilà ce que j'ai fait :
class ND_View_Helper_Url extends Zend_View_Helper_Url{ static private $_disallowParams = array( 'module' , 'controller' , 'page' , 'action' ); public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true){ $params = Zend_Controller_Front::getInstance()->getRequest()->getParams() ; $myParam = array(); foreach( $params as $key => $value ){ if ( strlen($value) > 0 && ! in_array($key, self::$_disallowParams)){ $myParam[$key] = $value ; } } return parent::url($urlOptions, $name, $reset, $encode).'?'.http_build_query($myParam); } }
C'est un cas fait rapidement pour résoudre cette problématique mais cela ne fonctionnera que si le formulaire de recherche est en GET. Ce qui devrait être pour moi toujours le cas.
En esperant que ca t'aide
Hors ligne
merci j'ai utilisé le
$params = Zend_Controller_Front::getInstance()->getRequest()->getParams() ;
dans la vue de la pagination comme ca je récupère les parametres ^^ ca marche nickel merci
Hors ligne
@lassoya: tu pouvais utiliser tout simplement la variable $_SERVER['QUERY_STRING'] dans ton pagination.phtml, que tu colles à
url(array('page'=>$page.'?'.$_SERVER['QUERY_STRING']))
Hors ligne
selecto16 > Salut, le "getParams()" à des avantages intéressants par rapport au "$_SERVER['QUERY_STRING']" :
- certains éléments du framework, comme les aides d'action et les plugins peuvent modifier, filtrer et compléter les paramètres
- si on exécute plusieurs actions l'une après l'autre, on peut avoir des listes de paramètres différents pour chaque action
- le getParams() est sous forme de tableau alors que le QUERY_STRING est une chaine formaté. Il est plus facile de changer certaines valeurs comme le numéro de page quand c'est sous forme de tableau.
Hors ligne