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 :

afficher les résultats par défaut d'un Filter en Frontend [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut afficher les résultats par défaut d'un Filter en Frontend
    Bonjour,

    j'utilise un filter au niveau de mon frontend. Je voudrais savoir s'il est possible d'afficher par défaut les résultats d'une colonne de mon filtre au moment de la connexion de l'utilisateur:

    voici mon exemple:
    je voudrais que par défaut, les résultats de mon index m'affichent uniquement les commandes des articles en cours (sans avoir à lancer la recherche).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //classe ArticleFormFilter
     
    $this->widgetSchema['article_courant'] = new sfWidgetFormInputCheckbox(array('label' => 'Commandes en cours uniquement'));
    Merci pour 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
    Salut,

    Tu peux directement agir sur le contenu de ton filtre dans ton action avant de générer les résultats : ça te donnerait quelque chose dans ce goût là :

    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
    // action getArticles()
    $filters = new ArticleFormFilter();
     
    if($request->isMethod('POST'))
    {
      //... récupération de tes filtres dans la globale POST
    }
    else 
    {
      $filtersContent = $filters->getValue();
      $filtersContent['article_courant'] = 1; // la valeur qu'il faudra
      $articles = $filters->buildQuery($filtersContent)->execute();
    }
     
    $this->articles = $articles;
    Je ne l'ai pas testé mais il me semble que c'est dans cette direction que tu devrais regarder.

    ++

  3. #3
    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
    EDIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $filtersContent = $filters->getValues();

  4. #4
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    334
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 334
    Points : 73
    Points
    73
    Par défaut
    merci pour ta réponse Nico désolée pour ce retard..
    j'ai essayé d'appliquer ton code, mais ça ne marche pas encore..je sais pas vraiment comment récupérer les filtres dans la globale post et à quel niveau j'intègre mon buildQuery().
    voici le code de mon controller:
    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
     
    public function executeIndex(sfWebRequest $request)
      {     
        ....
      $this->filters = new articleFormFilter($this->getFilters());
       if($request->isMethod('POST') )
       {
     
       $this->articles = $this->buildQuery();
     
       } 
     
       else{
       	$this->setFilters(array('article_courant' => true));
       	$this->articles = $this->buildQuery(); 
       }    
     
      }

  5. #5
    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
    Je ne sais pas si c'est la meilleure manière de faire et je n'ai pas testé pour ton cas mais on devrait se rapprocher de quelque chose comme ça.

    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
     
    public function executeIndex(sfWebRequest $request)
    {     
      // ....
      $user = $this->getUser();
      $filters = new articleFormFilter();
     
      if($request->isMethod('POST') ) // on vient de faire une requête de filtre
      {
        $filtersContent = $request->getParameter('article_filters'); // format de l'attribut 'name' des éléments html
        $filters->bind($filtersContent);
     
        if ($filters->isValid())
        {
          $user->setAttribute('article_filters', $filters->getValues()); // mise à jour du filtre en session (contexte hors admin gen)
          $query = $filters->buildQuery($user->getAttribute('article_filters')); // construction de la requête
          $articles = $query->execute();
        }
      }
      else // on a pas fait de requête mais on garde les filtres qui sont en session
      {
        // 1. récupèration des données du filtre en session s'il y en a
        // 2. on bind le formulaire
        // 3. on construit la requête de la même manière avec buildQuery
      } 
    }
    et coté html bien faire attention à ce que l'attribut name soit de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input id="attr" name="article_filters[attr]" type="text" />
    Si tu génères ton form en faisant un ou en faisant pour chaque widget un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $form['attr']->render()
    vérifie bien le name généré en HTML : c'est avec ce nom que tu vas récupérer le tableau de tous tes filtres dans le $request->getParameter()

    ++

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

Discussions similaires

  1. Afficher les résultats par ligne (horizontal)
    Par SINASOFT dans le forum SQL
    Réponses: 11
    Dernier message: 29/08/2013, 16h57
  2. Requête pour afficher les résultats par lot
    Par devalender dans le forum SQL
    Réponses: 4
    Dernier message: 26/10/2011, 16h26
  3. afficher les résultats par groupe avec code igniter
    Par rheritahiana dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 04/04/2011, 12h02
  4. Comment afficher tous les utilisateurs par défaut d'Oracle
    Par oladele.liamidi dans le forum Administration
    Réponses: 2
    Dernier message: 11/01/2010, 09h26
  5. [MySQL] Afficher les résultats de recherche par ordre décroissant
    Par hadjiphp dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/06/2009, 21h24

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