IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Zend_Paginator Problème de changement de page


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Par défaut Zend_Paginator Problème de changement de page
    Bonjour tout le monde,

    je travaille actuellement sur un formulaire de recherche qui après validation affiche un tableau de résultats.
    Ces résultats sont obtenus en interrogeant une base de données suite aux critères de recherche saisis par l'utilisateur.

    Dans ma méthode de récupération des données du formulaire, je récupère des variables POST. Je fais des tests tel que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ($this->getRequest()->isPost()){
           // traitement des valeurs pour faire les réquêtes et récupérer les résultats
           // traitement de la paginatin
           ...
    }
    Selon les critères renseignés le tableau de résultats peut être très grand.
    J'essaie donc d'utiliser le système de pagination à l'aide du composant Zend_Paginator pour n'afficher que 10 résultats par page.

    Etant donné la taille de mes tables, je passe un 'select' à mon Zend_Paginator afin qu'il se charge d'executer la requête comme il se doit en exécutant une requête pour ne remonter que la liste des items de la page en cours.

    L'affichage de la première page est ok, j'obtiens bien les 10 premiers résultats.
    Le problème se pose lorsque je veux aller à une page suivante, la pagination reload mon action de récupération de données du formulaire avec comme paramètre GET page=2. Il ne rentre donc pas dans mon test : if($this->getRequest()->isPost()) et ne traite pas mes valeurs post ...

    J'ai regardé sur le forum et ai essayé avec la mise en session de ma requête mais ça ne me donne aucun résultat.

    Je suis coincé à cause de cela et ne vois vraiment pas comment faire

    Merci d'avance pour toutes vos idées qui pourraient m'éclairer sur le problème.

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    En effet, pour pouvoir faire persister les critères de recherche de page en page, la session est le choix le plus évident : le Zend_Paginator ne fait rien de plus que passer le bon paramètre de page en utilisant le routeur Zend Framework.

    Difficile de t'aiguiller sans une idée précise du code de ton contrôleur ceci dit, mais grossomodo :
    - Initialise un Zend_Session_Namespace dans ton contrôleur, et assure-toi au passage d'utiliser un namespace unique à chaque contrôleur, ça t'évitera de te demander pourquoi les requêtes sur d'autres pages se mettent à planter
    - Si la requête est en POST : enregistre les critères de recherche dans la session.
    - Récupère les critères de recherche depuis la session : si tu viens de valider le formulaire c'est ceux que tu viens juste de fournir, sinon ils persistent de page en page.
    - Et bien entendu continue d'utiliser les critères de recherche pour construire ta requête.

    De cette façon, ça devrait marcher sans trop de soucis, le plus difficile sera de bien doser quand réinitialiser la session pour pas que cette persistance ne soit pénible pour l'utilisateur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Par défaut
    Merci Nighty!

    C'est ce que j'ai fait, j'ai mis mon formulaire de recherche dans une session et je fais un test:
    - si je reçois des données en POST => mise en session du formulaire et construction de la requête à partir des données envoyées pour l'affichage de la première page
    - je reçois des données en GET (le numéro de page) => récupération du formulaire en session et construction de la requête pour l'affichage des pages suivantes.

    Ca a l'air de bien fonctionner, donc problème résolu

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Pas de problème, content d'avoir pu aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/09/2011, 12h13
  2. Réponses: 5
    Dernier message: 18/05/2011, 17h11
  3. Datapager et ListView: Problème changement de page
    Par thebop dans le forum ASP.NET
    Réponses: 4
    Dernier message: 09/12/2010, 17h37
  4. Réponses: 2
    Dernier message: 27/06/2007, 14h28
  5. Réponses: 6
    Dernier message: 22/06/2007, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo