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 :

Formulaire: récupérer une liste derroulante d 'une table [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut Formulaire: récupérer une liste derroulante d 'une table
    Voila mon problème est assez simple, mais j arrive pas à le faire

    J ai une entité Achat qui a comme attribut le fournisseur.

    J aimerai avoir au niveau du formulaire une liste déroulante qui me donne les nom des societe dans une liste déroulante mais je sais pas comment le faire
    mon formulaire est le suivant:

    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
    <?php
     
    namespace portailQuapricAuto\LogistiqueBundle\Form;
     
    use portailQuapricAuto\VehiculeBundle\Form\VoitureType;
    use portailQuapricAuto\ContactBundle\Form\FournisseurType;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class AchatType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
     
                ->add('date','birthday')
                ->add('villeAchat', 'text', array('max_length' => 20, 'required' => false, 'label' => 'Ville d \'achat ', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
     
                ->add('Vehicule', new voitureType )
            ;
        }
     
        public function getName()
        {
            return 'portailquapricauto_logistiquebundle_achattype';
        }
    }
    mais voila ça marche pas j ai pas de champ

    pouvez vous svp m'aider

    et supposons que que j arrive à afficher la liste déroulante, comment faire pour pour mettre idChamp dans à la place du formulaire lors du traitement

    merci

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 79
    Par défaut
    Salut,

    Si je comprends bien ce que tu veux faire.
    C'est d'afficher et choisir dans une liste déroulante et pouvoir enregistrer la variable qui sera choisi dans le champ du formulaire ?

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    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
    <?php
     
    namespace portailQuapricAuto\LogistiqueBundle\Form;
     
    use portailQuapricAuto\VehiculeBundle\Form\VoitureType;
    use portailQuapricAuto\ContactBundle\Form\FournisseurType;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class AchatType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
     
                ->add('date','birthday')
                ->add('villeAchat', 'text', array('max_length' => 20, 'required' => false, 'label' => 'Ville d \'achat ', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
     
                ->add('Vehicule', new voitureType )
                ->add('fournisseur', 'entity', array(
                    'class' => 'portailQuapricAutoContactBundle:Fournisseur',
                    'property' => 'name',
                ))
            ;
        }
     
        public function getName()
        {
            return 'portailquapricauto_logistiquebundle_achattype';
        }
    }
    Il faut utiliser le type de champ entity. L'option class prend le nom de l'entité qui représente tes fournisseurs, l'option property prend le nom de la propriété de l'entité qui servira d'affichage dans la liste déroulante. L'ID qui servira de value aux <option> générés sera le champ repéré comme ID de l'entité dans le mapping (c'est automatique et transparent tant que ta clé n'est pas composée).

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Citation Envoyé par pc.bertineau Voir le message
    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
    <?php
     
    namespace portailQuapricAuto\LogistiqueBundle\Form;
     
    use portailQuapricAuto\VehiculeBundle\Form\VoitureType;
    use portailQuapricAuto\ContactBundle\Form\FournisseurType;
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class AchatType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
     
                ->add('date','birthday')
                ->add('villeAchat', 'text', array('max_length' => 20, 'required' => false, 'label' => 'Ville d \'achat ', 'trim' => true, 'read_only' => false, 'error_bubbling' => false))
     
                ->add('Vehicule', new voitureType )
                ->add('fournisseur', 'entity', array(
                    'class' => 'portailQuapricAutoContactBundle:Fournisseur',
                    'property' => 'name',
                ))
            ;
        }
     
        public function getName()
        {
            return 'portailquapricauto_logistiquebundle_achattype';
        }
    }
    Il faut utiliser le type de champ entity. L'option class prend le nom de l'entité qui représente tes fournisseurs, l'option property prend le nom de la propriété de l'entité qui servira d'affichage dans la liste déroulante. L'ID qui servira de value aux <option> générés sera le champ repéré comme ID de l'entité dans le mapping (c'est automatique et transparent tant que ta clé n'est pas composée).
    merci à vous pour vos reponse, sauf que là mon pb à changer, j ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Catchable Fatal Error: Argument 1 passed to portailQuapricAuto\LogistiqueBundle\Entity\Achat::setVehicule() must be an instance of portailQuapricAuto\LogistiqueBundle\Entity\portailQuapricAuto\VehiculeBundle\Entity\Vehicule, array given, called in F:\serveurLocal\wamp\www\Symfony2\vendor\symfony\src\Symfony\Component\Form\Util\PropertyPath.php on line 347 and defined in F:\serveurLocal\wamp\www\Symfony2\src\portailQuapricAuto\LogistiqueBundle\Entity\Achat.php line 175
    et je pense que mon pb c est au niveau d ici:
    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
    $achat  = new Achat();
                $request = $this->getRequest();
                $form    = $this->createForm(new AchatVoitureType(), $achat);
                $form->bindRequest($request);
     
                if ($form->isValid()) {
                    $em = $this->getDoctrine()->getEntityManager();
                    $em->persist($achat);
                    $em->persist ($achat->getVehicule());
                    $em->flush();
     
                    return $this->redirect($this->generateUrl('achat_show', array('id' => $entity->getId())));
     
                }
     
                return $this->render('LogistiqueBundle:Achat:new.html.twig', array(
                    'entity' => $entity,
                    'form'   => $form->createView()
                ));

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    J'ai l'impression que ton entité Achat n'a pas de relation vers l'entité Vehicule...

    Il t'en faut une pour exploiter le champ 'entity'...

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Par défaut
    Citation Envoyé par pc.bertineau Voir le message
    J'ai l'impression que ton entité Achat n'a pas de relation vers l'entité Vehicule...

    Il t'en faut une pour exploiter le champ 'entity'...
    Justement si, c est le suivant:
    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
      /**
        * @ORM\OneToOne(targetEntity="portailQuapricAuto\VehiculeBundle\Entity\Vehicule", cascade={"persist", "merge", "remove"})
        * @ORM\JoinColumn(name="vehicule", referencedColumnName="id",nullable=true)
        */
        private $vehicule;
       /**
        * @param Vehicule $vehicule
        */
        public function setVehicule(portailQuapricAuto\VehiculeBundle\Entity\Vehicule $vehicule)
        {
        $this->vehicule = $vehicule;
        }
     
        /**
        * @return portailQuapricAuto\VehiculeBundle\Entity\Vehicule
        */
        public function getVehicule()
        {
        return $this->vehicule;
        }

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,
    As tu une option data_class dans ton VoitureType?
    http://symfony.com/doc/current/book/...rms-data-class

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 08/11/2012, 18h47
  2. [AJAX] liste liée a une liste liée a une liste
    Par dirty_harry dans le forum AJAX
    Réponses: 2
    Dernier message: 03/07/2009, 12h18
  3. [MySQL] récupérer l'item selctionné d'une liste déroulante dans une variable php
    Par car0line dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 22/04/2009, 15h30
  4. acceder à une liste contenue dans une liste
    Par CPI_en_mousse dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 12/06/2007, 09h33
  5. remplir une liste à partir d'une liste
    Par LeXo dans le forum Access
    Réponses: 7
    Dernier message: 14/04/2006, 13h29

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