Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-05-2008 16:38:53

JuTs
Membre
Date d'inscription: 07-03-2008
Messages: 63

formulaire de filtrage

Bonjour

Je développe une application web avec ZF. Plusieurs action permettent l'affichage de données. Et pour éviter d'avoir des centaines de lignes affichées sur une seule page, j'ai mis en place un système de paginations basé, globalement, sur le même principe que ce tuto : http://julien-pauli.developpez.com/tuto … ge-tables/ .
Jusqu'à présent tout fonctionne parfaitement. Mais je souhaite ajouter, pour les actions devant afficher beaucoup de données, un formulaire permettant de rechercher/filtrer les données selon certains critères (date, nom, ...). J'ai donc ajouté un formulaire et une fonction dans mon contrôleur (en réalité le contrôleur parent de tous mes contrôleurs) qui va traiter les données du formulaire et exécuter la requête en conséquence.
Voilà, ici encore, ça fonctionne plutôt bien.

Les problèmes surviennent lorsque la pagination est utilisé parallèlement à la fonction de recherche. En gros tout fonctionne uniquement si je me trouve sur la première page.

Exemple du problème qui se pose :

Mes URL sont semblable à ceci :

www.truc.com/module/controleur/action

et lorsque la pagination est utilisée :

www.truc.com/module/controleur/action/page/1
www.truc.com/module/controleur/action/page/2
...

L'url de l'action à exécuter par le formulaire est déterminée par :

Code:

$this->Url(array())

Ce qui fait que si j'envoie le formulaire alors que je me trouve, disons, sur la page 3, j'aurai au final la page trois affichée. Même si je n'ai pas trois pages de résultats après recherche.

Mes idées pour éviter ce genre de problème :

vérifier si la requête est de type GET ou POST. Si c'est POST c'est que le formulaire a été envoyé, il s'agit d'une recherche et donc réduction de l'url www.truc.com/module/controleur/action/page/2 à www.truc.com/module/controleur/action

Mais il y a un autre problème. si la recherche me donne effectivement plusieurs page et que je passe à la page suivante la recherche sera perdue et j'aurai à nouveau la totalité des enregistrements. Pour ce problème-ci, je pense enregistrer les données du formulaire en session et les récupérer lors du passage à la page suivante.


j'aurais donc quelque chose du genre :

Code:

if post
   réduction de l'url
   requête filtrée
else if session
   requête filtré
else
   requête "normale"

Voilà mes idées actuelles.

Mais je suis débutant avec ZF, donc je me demandais s'il y avait un moyen de gérer ce type de recherche plus facilement


Merci d'avance pour vos commentaire


Julien

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