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 :

Mettre une valeur par défaut à un filtre [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut Mettre une valeur par défaut à un filtre
    Bonjour,

    j'ai module généré par l'admin generator
    dans l'action index qui liste mes évènements

    je voudrai que par défaut que ce soit les évènements non diffusés qui s'affiche

    j'ai dans ma bd un champ nommé "is_send"

    donc is_send == 0 comme requête doctrine

    peut on le faire à partir du fichier de config filter.yml
    ou generator.yml

    ou dois je surcharger l'action index ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je ne suis pas sûr de moi, mais je dirais que tu peux définir la requête qui sera utilisée pour récupérer la liste.

    Cela se réalise via la directive list:table_method de ton generator.yml

    Voir le tutorial jobeet 12 : http://www.symfony-project.org/jobee...b_table_method

    Par contre avec cette méthode tu n'auras pas le moyen de changer le filtre pour tous les afficher. Il y a peut être un moyen de mettre un filtre par défaut, ce qui correspondrait plus à ton besoin, mais aucune idée du comment faire

  3. #3
    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
    Je vais compléter.

    Tu as deux possibilité. N'afficher que les éléments non diffusés. La méthode de yotsumi est la bonne.

    Présenter des éléments filtrés sur "non diffusés", mais donner la possibilité à l'utilisateur de modifier cette donnée et de changer les critères de filtres. Dans ce cas, il faut simuler l'envoie d'une requête du filtre. Ce qui revient, à l'aide de la fonction url_for à générer un lien qui va envoyer les données en $POST et les données qui correspondent à ton filtre (comme si on cliquait sur le bouton filtrer de la boite du filtre).

    A toi de voir.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    Pour finir j'ai fait une surcharge de l'action index
    j'ai plus eu besoin de travailler sur le champ is_send
    mais sur un champ date, mais le principe reste le même

    grâce à ce code, l'utilisateur peut choisir ou non d'afficher les eves passés

    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
     
     public function executeIndex(sfWebRequest $request) {
     
            $filters = $this->getFilters();
            $newfilter = '';
     
            if (!isset($filters['evepasse']) OR $filters['evepasse'] != 'yes') {
                $datefin = array('from' => date('Y-m-d'), 'to' => NULL);
                $newfilter = array('datefin' => $datefin);
            }
            else
            {
                unset ($filters['datefin']);
            }
     
            if(is_array($newfilter)) {
                $filters = array_merge($filters, $newfilter);
                $this->setFilters($filters);
            }
     
            parent::executeIndex($request);
        }

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Par défaut
    J'ai trouvé aussi cette méthode :

    Dans actions.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     protected function buildQuery() {
     
            $query = parent::buildQuery();
            $filters = $this->getFilters();
     
            if (!isset($filters['etat'])) {
                $rootAlias = $query->getRootAlias();
                $query->andWhere($rootAlias . '.etat != ?', 'Clôturé');
            }        
     
            return $query;
        }

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    attention avec ta 2éme solution le champ filtrer n'est pas mis a jour, et tu ne sait pas que tes données affichés sont filtrés !!!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/10/2009, 09h06
  2. Mettre une valeur par défaut dans un input type='file'
    Par fab76000 dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2009, 19h59
  3. Réponses: 10
    Dernier message: 04/11/2008, 14h30
  4. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  5. mettre une valeur par défaut
    Par oolon dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 17h20

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