Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je coince sur un détail pénible,
après avoir mis en place une pagination je souhaite mettre en place un tri sur les titres des colonnes :
voilà ce que j'ai fait :
Dans mon controller, la réception d'une variable $order récupéré par l'url :
$order = $this->getRequest()->getParam('order'); $this->view->albums = $album->fetchAll(null,$order, $rowPerPage, $pager->offset);
Dans ma vue, le passage de cette même variable :
<a href=?order=title>Titre</a>
Le tri se fait bien mais j'ai un problème avec ma pagination, en effet lors d'un changement de page le tri ne s'effectue plus... Si quelqu'un a une idée ? Comment conserver ce foutu tri sachant que si je passe en dur dans le fecthAll l'order by ca marche nickel même avec la pagination. Je pense que c'est un problème stupide mais je bloque la dessus.
Hors ligne
Bonjour,
Ce que tu peux faire, c'est ajouter dans tes liens de pagination la colonne avec laquelle tu trie.
Ce qui pourrait donner : <a href="?page=X&order=title">Page X</a>
Sinon, tu peux voir avec les règles de routage. En fonction de la manière dont tu accèdes à la page, cela peut changer mais en basic cela peut donner :
http://server/:module/:controller/:action/:page/:order
Tu ajoutes un paramètre nommé : order en fin d'url. Pour reprendre ton exemple :
<a href="http://server/:module/:controller/:action/1/title">Titre</a>
@+, Damien
Edit: dans l'exemple, j'ai supposé être à la page 1. Les :module, :controller, :action sont à corriger pour matcher avec ton url.
Dernière modification par Ysaak (06-09-2007 11:28:36)
Hors ligne
Ou alors utilise une variable de session pour stocker sur quel colonne doit s'effectuer le trie.
Hors ligne
Salut Damien,
merci de ta réponse, et j'ai adopté ta première solution en passant dynamiquement l'ordre de tri dans l'url de la pagination. Merci beaucoup pour ton coup de main. a++ Frédéric
Hors ligne