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 :

[Form] Plusieurs entités


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Points : 18
    Points
    18
    Par défaut [Form] Plusieurs entités
    Bonjour, j'ai un problème concertant un select multiple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ->add('magasin', 'entity', array(
                    'class'    => 'GlobalBundle:Magasin',
                    'property' => 'id',
                    'multiple' => true,
                    'required' => false
                ))
    je veux lister tous les id des magasins et pouvoir attribuer plusieurs magasins sur un user.

    J'ai cette erreur:

    Expected argument of type "Doctrine\Common\Collections\Collection", "Proxies\GlobalBundleEntityMagasinProxy" given

    Si je retire le multiple j'ai bien ma liste de magasin qui s'affiche.

    Need help!
    merci

  2. #2
    Membre habitué
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2010
    Messages : 141
    Points : 157
    Points
    157
    Par défaut
    As-tu bien ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->magasin = new ArrayCollection();
    dans ton user?

    Cela te permettra de gérer la collection si la relation entre User et Magasin est en ManytoOne.

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    ça ressemble plutôt à un problème dans ton mapping.
    Si tu as appelé l'attrbut magasin au singulier, ça veut dire que ton entité User a une relation ManyToOne vers Magasin, donc c'est incohérent par rapport à ce que tu demandes au formulaire.
    Met plutôt un ManyToMany.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Bonjour, j'ai mis un manytomany dans mon entity Magasin, j'ai une nouvelle erreur:

    The column id must be mapped to a field in class GlobalBundle\Entity\RoleMagasin since it is referenced by a join column of another class.

    Je met mes entity, RoleMagasin(contient que des foreign key):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        /**
         * @var Magasin Le magasin pour lequel l'utilisateur a ce rôle.
         *
         * @ORM\ManyToMany(targetEntity = "\GlobalBundle\Entity\Magasin")
         * @ORM\JoinColumn(name = "id", referencedColumnName = "id_magasin")
         */
        private $magasin;
    et Magasin:

    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
     
        /**
         * @var integer Identifiant du magasin.
         *
         * @ORM\Id
         * @ORM\Column(
         *      name = "id_magasin",
         *      type = "integer"
         * )
         *
         * @Assert\MaxLength(
         *      limit   = 4,
         *      message = "magasin.idLength",
         *      groups  =  {"ajout"}
         * )
         * @Assert\Type(
         *      type    = "numeric",
         *      message = "global.notanumber",
         *      groups  = {"ajout"}
         * )
         * @Assert\NotBlank(
         *      message = "magasin.idRequired",
         *      groups  = {"ajout"}
         * )
         */
        private $id;
    merci

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Donc ton mapping initial c'est
    User hasMany RoleMagasin
    RoleMagasin hasOne User
    RoleMagasin hasOne Magasin
    Magasin hasMany RoleMagasin
    ?

    Je met mes entity, RoleMagasin(contient que des foreign key):
    Si RoleMagasin ne contient que des foreign keys il n'a pas vocation à devenir une entité, tu peux dans ce cas mettre un ManyToMany entre User et Magasin

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Bonjour, pour l'instant on laisse tomber User, je m'en sert pas encore.
    Je veux juste pouvoir lister ma liste de magasin dans un select à choix multiple.

    J'ai 2 Entité , une Magasin dont je veux lister les ID et une entity RoleMagasin qui contient les ID des magasin , des users et des roles.

    Logiquement je devrais pouvoir lister les id_magasin contenu dans RoleMagasin sans faire de mapping non?

    comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                ->add('magasin', 'entity', array(
                    'class'    => 'GlobalBundle:RoleMagasin',
                    'property' => 'magasin',
     
                    'multiple' => true,
                    'required' => false
                ));
    Mais j'ai toujours cette erreur:

    The column id must be mapped to a field in class GlobalBundle\Entity\RoleMagasin since it is referenced by a join column of another class.

    Pour répondre à la question, oui c'est bien ça.

Discussions similaires

  1. [2.x] [Form] plusieurs entités modifiées en même temps
    Par n_manu dans le forum Symfony
    Réponses: 1
    Dernier message: 23/09/2013, 11h17
  2. [2.x] [Form] Plusieurs formulaires sur une même entité
    Par flutz dans le forum Symfony
    Réponses: 1
    Dernier message: 15/09/2012, 23h24
  3. collision - plusieurs entités
    Par poussinphp dans le forum Développement 2D, 3D et Jeux
    Réponses: 13
    Dernier message: 25/04/2007, 20h03
  4. Plusieurs entités pour une même relation
    Par Mandotnet dans le forum Schéma
    Réponses: 1
    Dernier message: 08/04/2007, 19h13
  5. Acesskey dynamique dans un form à plusieurs boutons submit ?
    Par boteha dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/09/2005, 17h54

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