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 :

redirection d'un filtre


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut redirection d'un filtre
    bonjour et au secouuurs!!

    en fait j'ai généré un filtre dans le frontend de mon application et j'ai passé des paramètres dans l'URL qui mène à ce filtre.

    LE PROBLÈME c'est que lorsque je filtre mes "documents" je perds les paramètres qui se trouvaient dans l'URL(hors j'en ai urgent-ment besoin!!)

    j'ai essayé de le récupéré dans "executeFilter" que j'ai surcharger dans l'action
    en editant ceci:

    $journal=$request->getParameter('journal');
    $this->redirect('@document?journal='.$journal);

    ca n'a rien donné! Quelqu'un peut-il me sortir de ce traquenard??

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut


    Qu'appels tu filtre ?

    Que sont les documents ?

    Comment et à quoi passes-tu les paramètres de l'URL ?

    Tu donnes un minuscule bout de code (la prochaine fois, penses à utiliser la balise code, plus lisible).

    As-tu vérifier si tu avais quelque chose dans la variable journal ?

    Genre, entre tes deux lignes :
    die("$journal");

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut
    Slt mimi et désolé pour le mank d'information!

    En fait j'ai généré un module "document" avec la commande "Doctrine generate-admin" dans le frontend.Ce qui m'a permis d'avoir un filtre pour trier mes documents en fonction des champs de la table document.

    Voici l'URL qui mène a ce module:
    http://.../frontend_dev.php/document...al=2&contact=2

    lorsque j'effectue un tri à partir des champs de mon filtre, j'ai les documents que je cherche mais mon URL donne ça:

    http://.../frontend_dev.php/document

    En fouillant dans le cache de symfony je me suis rendu compte que l'action qui s'occupe du filtre est "executeFilter"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    public function executeFilter(sfWebRequest $request)
      {
     
        $this->setPage(1);
     
        if ($request->hasParameter('_reset'))
        {
          $this->setFilters($this->configuration->getFilterDefaults());
     
          $this->redirect('@document');
        }
     
        $this->filters = $this->configuration->getFilterForm($this->getFilters());
     
        $this->filters->bind($request->getParameter($this->filters->getName()));
        if ($this->filters->isValid())
        {
          $this->setFilters($this->filters->getValues());
     
          $this->redirect('@document');
        }
     
        $this->pager = $this->getPager();
        $this->sort = $this->getSort();
     
        $this->setTemplate('index');
      }
    la parie qui réécrit l'URL est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->redirect('@document');
    et j'ai essayé de le modifier comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $journal=$request->getParameter('journal');
    $this->redirect('@document?journal='.$journal);
    et la...toujours rien, l'URL donne:

    http://.../frontend_dev.php/document?journal=

    sans me ramener la variable journal!!

    j'espère que ces explications vous fera mieux comprendre mon probleme.
    Merci pour votre aide!

    PS: j'ai réécrit mon action "executeFilter()" au bon endroit dans mon module document

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Le code que tu me décris n'existe que dans le cache de l'application et est effacé à chaque lancement en mode debug ainsi qu'à chaque cc.

    Si tu veux partir de la base du générateur d'admin, il faut générer tel que tu l'as fait, puis, quant la liste te conviens (attention, après elle sera très difficile à modifier), récupérer le contenu du dossier dans le cache et le copier en lieu et place du module existant. A partir de là, le générator.yml n'a plus d'effet. Mais tu pourras modifier le code à ta guise.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut
    je ne fais que ça depuis prendre le code du cache et le réécrire au bon endroit dans mon module pour pouvoir en faire ce que je veux! mais sans succès jusque la!
    Néanmoins merci pour ton aide!

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    OK, donc pas de problème de régénération.

    J'ai cherché un peu plus loin.

    sfAction::redirect ne permet pas de rajouter des arguments. Donc impossible d'utiliser cette méthode pour avoir une url formaté avec des arguments.

    Question, est-il indispensable pour ton application que l'url fasse apparaître l'argument ?

    Si non, pourquoi ne pas passer le paramètre par un l'outil sfUser::setFlash ?

    Dans ton action, juste avant le redirect, tu fais :
    $this->getUser()->setFlash('journal', $journal);

    Et dans l'action d'arrivée tu n'as qu'à récupérer par
    $journal = $this->getUser()->getFlash('journal');

    L'avantage des objets flash est qu'ils ont une très faible persistance et qu'il n'est donc pas nécessaire de les nettoyers (par rapport au container parameters du même objet sfUser).

Discussions similaires

  1. Redirection d'un filtre
    Par Gwenc dans le forum JSF
    Réponses: 2
    Dernier message: 03/11/2010, 12h00
  2. Redirection d'un filtre
    Par Gwenc dans le forum JSF
    Réponses: 4
    Dernier message: 22/10/2010, 23h32
  3. Redirection & Filtre
    Par Debault dans le forum JSF
    Réponses: 5
    Dernier message: 17/02/2009, 09h32
  4. [1.x] redirect dans un filtre
    Par NVCyril dans le forum Symfony
    Réponses: 1
    Dernier message: 02/05/2008, 13h35
  5. Filtre et redirection
    Par biniou14 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 23/04/2007, 21h51

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