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

Symfony PHP Discussion :

Retenir les filtres en changeant de page


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Points : 18
    Points
    18
    Par défaut Retenir les filtres en changeant de page
    Bonjour,

    j'ai créé un filtre sur un seul champ simple, il liste des users je voudrais que quand j'édite un user et que je retourne à cette liste, le filtre reste en place.

    Comment faire?

    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Tu pourrais regarder comment fonctionnaient les filtres dans symfony 1.x.

    Dans un admin-generator, les filtres de type formFilter étaient chargés et possédaient le comportement que tu décris. Si je me souviens bien on utilisait la session pour stocker les critères de filtre, tout simplement.

    Le fonctionnement global était le suivant :

    Premier chargement de page : on check si ce filtre existe déja en session, comme ce n'est pas le cas, un nouveau formulaire de type filtre est chargé et tous les résultats sont affichés.

    Lorsqu'on le submit, les critères sont enregistrés en session et on recharge la page en faisant une requête par rapport à la session.

    Chaque fois qu'on voudra retourner sur la page, on utilisera les critères de la session, tant que le filtre n'aura pas été réinitialisé. (attention il faut bien penser à re-remplir le form et pas uniquement faire la requête sur les résultats : sinon tu obtiens un form de filtre vierge et un résultat filtré : ce qui est déroutant).

    Enfin, tu flush ta session en utilisant un bouton "effacer filtres".

    Voilà comment ça fonctionnait : je ne sais pas s'il y a des manières plus récentes ou plus propres de faire mais c'est celle que je te suggère.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    J'ai aussi fait du Symfony 1.4 et effectivement les filtres était gardé en session. C'était automatique et ça à l'air bien plus compliqué dans sf2 ...

  4. #4
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Ce n'est pas plus compliqué, juste pas inclus. Il faut regarder du coté du bundle SonataAdmin

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    le mécanisme de mise en session des filtres n'a pas été repris dans le sonata admin bundle.
    à la place les formulaire de filtres sont transmis en get, ce qui est une façon assez naturelle de faire lorsque l'on veut revenir à une vue donnée.
    Dans le détail, Sonata doit gérer lui-même les redirections vers la liste des entités.

    Si en plus tu n'as qu'un filtre à appliquer, je te conseillerais cette méthode:
    1 - filtrer via un paramètre get afin d'avoir une url qui corresponde toujours à la même vue.
    2 - dans le template de formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form>
    {{form_widget(form)}}
    {#si le formulaire a été soumis et était invalide#}
    {% if app.request.get('previous-url')%}
    <input type="hidden" name="previous-url" value="{{app.request.get('previous-url')}}"/>
    {%else%}
    {#si on on arrive depuis la page liste ex "ma/liste/?filter-name=toto" #}
    <input type="hidden" name="previous-url" value="{{app.request.headers.get('referer')}}"/>
    {%endif%}
    <button type="submit">valider</button>
    </form>
    3 - dans le controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public function editAction(){
        //.....
        if($form->isValid()){
           //...persister l'entité
     
           $url=$request->get('previous-url');//la valeur a été transmise en même temps que le formulaire
           return new RedirectResponse($url);
     
       }
       //...
    }

Discussions similaires

  1. [XL-2007] changer les filtres des TCD pour une seule page
    Par yeahna dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/03/2012, 11h59
  2. Afficher les filtres dans ma page de rapport
    Par sydnol dans le forum Cognos
    Réponses: 8
    Dernier message: 01/12/2011, 14h09
  3. Réponses: 4
    Dernier message: 11/11/2005, 14h46
  4. Delphi et Interbase > TIBDataSet et les filtres
    Par AlexB59 dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/10/2005, 00h31

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