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 :

Liste déroulante depuis repository [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut Liste déroulante depuis repository
    Bonsoir,

    J'aimerais afficher un formulaire, avec une liste déroulante dont le contenu vient de la base de données.
    L'entité "Désignation" contient un ensemble de couples code/libellé pour alimenter des listes déroulantes

    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $builder
       ->add( 'objet', 'text' )
       ->add( 'etat', 'entity', array( 'class'=>'AhsCommunBundle:Designation',
            				  'property' => 'libelle',
            				  'query_builder' => function( DesignationRepository $repository )
            				                           {
            					                   return $repository->findByCode('etat');
            				                           }
                                             )
            	)        
       ->getForm();
    mais j'ai ce message d'erreur :
    Expected argument of type "Doctrine\ORM\QueryBuilder", "array" given
    Je ne sais pas comment transformer le résultat de "findByCode" en élément de type "QueryBuilder".

    Merci pour votre aide et à bientôt,
    Gilles

  2. #2
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Par défaut
    Salut,

    Voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ->add('decoupage', 'entity', array(
                    'multiple'  => false,
                    'expanded' => false,
                    'class' => 'MaPrezMainBundle:Decoupage',
                    'query_builder' => function(EntityRepository $er) {
                        return $er->createQueryBuilder('u')
                        ->orderBy('u.ordre', 'ASC');
                    },
                    'property' => 'nom',
                    'empty_value' => 'Veuillez choisir',
                    'required' => false
                ))

    Multiple et expanded font ton select (un seul choix possible car à false),
    query_builder fait ta requete en bdd,
    property choisit le champ de la bdd à mettre dans le select,
    empty_value permet de mettre un champ vide.

  3. #3
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour et merci pour ta réponse.

    En effet, j'ai vu cette option dans la doc, mais comme je vais le réutiliser régulièrement pour alimenter plusieurs listes déroulantes.
    J'aurais préférer utiliser une méthode du repository, pour avoir un code plus clair.

    Est-ce que c'est possible ?

  4. #4
    Membre averti
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Par défaut
    Je n'ai jamais testé mais ca doit être possible je pense.


    As tu essayé de modifier ceci dans ton code?
    En:
    Symfony devrait faire le lien vu que la class est déjà définie juste au dessus.




    Ah sinon je vois d'où vient le prob.
    C'est que dans ton repository ca renvoye un array d'entités.

    Mais je ne sais pas comment modifier cela...

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Par défaut objet Doctrine_Query
    findByCode doit retourner un objet Doctrine_Query,
    fais voir la fonction du repo stp. Elle devrait ressembler a ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function finByCode($code){
     
    $qb = $this->createQueryBuilder('toto');
     
    $qb->.....
     
    return $qb->getQuery();
     
    }

  6. #6
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour et merci pour cette remarque.
    Je vient de modifier mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	public function findAllFromCode( $sCode )
    	{
    		return $this->createQueryBuilder('d')
    		->where('d.code = :code')
    		->setParameter('code', $sCode)
    		->orderBy('d.libelle', 'ASC');
    	}
    et ça fonctionne.
    Merci et à bientôt.

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

Discussions similaires

  1. Source liste déroulante depuis MySQL
    Par zlatan13 dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/08/2008, 10h52
  2. MAJ liste déroulante depuis une autre liste
    Par airbeone dans le forum Langage
    Réponses: 1
    Dernier message: 15/01/2008, 17h41
  3. Liste déroulante depuis une feuille masquée
    Par Maxou135 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/10/2007, 10h25
  4. [Access] Filtrer une liste déroulante depuis une autre
    Par Marie_2116 dans le forum Access
    Réponses: 20
    Dernier message: 24/08/2007, 17h19
  5. [MySQL] Insertion dans une liste déroulante depuis une BD
    Par merymaru dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/05/2007, 21h28

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