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 :

FormFilter et champs personnalisés


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut FormFilter et champs personnalisés
    a tous,

    Je souhaite mettre en place un formFilter.

    Ce FormFilter doit me permettre de rechercher une demande.
    Je souhaiterais ajouter un champ qui permettrait de rechercher une demande selon le numéro de téléphone du demandeur ou encore l'email du demandeur.

    J'ai donc ajouté mes champs dans mon FormFilter, mais j'imagine que je devrais surcharger une méthode pour permettre de prendre en compte ces valeurs dans mon resultat.

    J'avais imaginé boucler sur le tableau renvoyé par getValues , et pour chaque champ ajouter un bout de requete,mais je ne trouve pas ca trop trop "propre"...

    Quelqu'un aurait il une idée ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Peut-être la FAQ répond-elle à ta problématique ?

    Cf. le post : Comment filtrer les éléments d'une table à partir d'une autre table avec une relation 1:n

  3. #3
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Le mieux, actuellement, pour comprendre le fonctionnement des objets filters est de générer un module admin et de l'utiliser, pour le générer en cache. En effet, les modules d'administration, une fois utilisés, fonctionne tel des modules standard, seul différence, notable, ils sont généré dans le cache, donc, une fois le module utilisé, l'idée est d'aller explorer le cache de symfony, dont la structure est proche de celle des répertoires classiques et d'aller explorer le code pour voir la manière d'utiliser le form filter.

    Si tu ne t'y retrouve pas, repasse donc par ici.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  4. #4
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut
    En fait il ne s'agit pas d'un filtre en admin, je suis sur un "front"

  5. #5
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Deux choses :
    • Si tu avais lu ma prose, tu aurais vu qu'il ne s'agit pas de mettre en place un module admin, mais d'en créer un temporairement pour s'inspirer du code.
    • Les modules admins peuvent être utilisé en front, comme des modules "normaux" peuvent être utilisé en backend.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  6. #6
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2009
    Messages : 64
    Points : 41
    Points
    41
    Par défaut


    Rassures toi Michel , je lis toujours ta prose , a chaque fois que tu m'indiques la voie a suivre

    J'ai donc crée un petit projet , vite fait bien fait et généré un backend.
    J'ai donc re-compris le fonctionnement d'un formfilter, mais a vrai dire, ma problématique reste entière. Je n'ai toujours pas trouvé comment filtrer une liste d'elements pour ce que je veux faire, a savoir:

    filtrer la liste de mes demandes en fonction du numéro de téléphone du demandeur...

    Je sais pas pourquoi mais je sens que la dessus, je vais ... me casser les dents...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    En continuant sur la remarque de Michel Rotta qui t'indique de générer un module admin -- c'est à dire par la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php symfony doctrine:generate-admin "app" "model" --module="module_name"
    ce que tu cherches à faire peut être résolu en réécrivant le contrôleur de l'index. Pour le moment (voir en cache), tu as quelque chose du genre (j'ai pris le code d'un de mes modules) :
    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
        public function executeIndex(sfWebRequest $request)
        {
            // sorting
            if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
            {
              $this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
            }
     
            // pager
            if ($request->getParameter('page'))
            {
              $this->setPage($request->getParameter('page'));
            }
     
            $this->pager = $this->getPager();
            $this->sort = $this->getSort();
        }
    Pour lister seulement les objets que tu veux, il faut passer au $pager la requête de recherche de tes éléments par l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->pager->setQuery($q);
    où $q est un objet Doctrine_Query.

    Ainsi, cela te donnerait quelque chose du genre :
    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
    28
    29
    30
    31
        public function executeIndex(sfWebRequest $request)
        {
            // topic_id
            if($request->hasParameter('topic_id'))
            {
                $this->topic_id = $topic_id = $request->getParameter('topic_id');
            }
            else
            {
              return new sfSecurityException('You have to select a topic to display messages. ');
            }
    
            // sorting
            if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
            {
              $this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
            }
    
            // pager
            if ($request->getParameter('page'))
            {
              $this->setPage($request->getParameter('page'));
            }
    
            $q = Doctrine_Core::getTable('Message')->getQuery($topic_id);
    
            $this->pager = $this->getPager();
            $this->pager->setQuery($q);
            $this->pager->init();
            $this->sort = $this->getSort();
        }
    (en gras ce qui a changé)

    Le $this->pager->init() sert à réinitialiser ton $pager afin qu'il prenne en compte tes changements.

    Et tu dois définir dans le MessageTable.class.php la méthode getQuery qui te retourne la Doctrine_Query de recherche de tes éléments.

    Autre méthode :

    Pour alléger cette méthode, tu as la possibilité dans le generator.yml de spécifier la "table_method", c'est à dire le nom de la méthode qui va te retourne la Doctrine_Query (ici : getQuery -- le nom n'est pas très parlant... va falloir que je refactore ).

    Je te renvoie ici à la documentation du site Symfony, qui te renseignera bien mieux que moi !

    Autre méthode :

    Celle indiquée dans le premier post !

Discussions similaires

  1. [OL-2010] Comment importer dans les champs personnalisés
    Par christiejc dans le forum Outlook
    Réponses: 0
    Dernier message: 22/07/2011, 10h26
  2. Réponses: 0
    Dernier message: 28/03/2011, 13h35
  3. openERP erreur de création de champs personnalisés
    Par herudo dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 02/12/2009, 10h23
  4. Emailing avec champs personnalisés et import de listes depuis excel, vous connaissez?
    Par Bertrand57 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 15/04/2008, 11h20
  5. [WSS3] Champs personnalisés dans Schema.xml
    Par vds2302 dans le forum SharePoint
    Réponses: 1
    Dernier message: 12/07/2007, 14h25

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