Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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 :
$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 :
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
Hors ligne