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, entité écrase les anciennes


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Par défaut Formulaire, entité écrase les anciennes
    Bonjour,

    Je suis débutant et essaye de développer une application web avec symfony2.

    J'ai plusieurs entités, dont parmis elles les entités User et Rencontre.
    J'ai créé un formulaire qui permet de créer une nouvelle rencontre et d'y ajouter des Users.

    Dans mon controller je crée l'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Dans mon controller
    $rencontre = new rencontre($user); // $user étant le User connecté qui crée la rencontre
    $form = $this->createForm(new RencontreType($user), $rencontre); // le formulaire
    $formHandler = new RencontreHandler($form, $this->get('request'), $this->getDoctrine()->getEntityManager());
     
     
    // Le constructeur de mon entité Rencontre 
    public function __construct($createur){
        $this->membres = new \Doctrine\Common\Collections\ArrayCollection; // Collection de User
        $this->membres[] = $createur;   
        $this->idCreateur = $createur->getId();
    }
    Mon constructeur fonctionne puisque j'enregistre bien L'id du créateur passé en argument.
    Mais lorsque je valide le formulaire, celui-ci efface le contenu de $membres pour y mettre soit les User que j'ai ajouté avec le formulaire, soit pour mettre un contenu vide si je n'ai pas ajouté de User depuis le formulaire.

    Et j'ai le même problème pour une autre fonctionnalité de mon application.
    J'ai l'impression que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $this->membres[] = $createur;
    ne rempli pas son rôle et remplace le contenu au lieu d'ajouter en fin de tableau...

    Quelqu'un serait-il comment résoudre ce problème ?
    Je voudrais que $membres contiennent (User) Createur ET les Users ajouté depuis le formulaire.

    Merci d'avance

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    ça devrai être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->addMembre($createur);
    et suprime

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->membres = new \Doctrine\Common\Collections\ArrayCollection;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Par défaut
    Cela ne change rien de mettre
    $this->addMembre($createur);
    et retirer l'initialisation me donne cette erreur :

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

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    faut bien configurer ton entité, montre la

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Par défaut
    J'ai laissé que les attributs qui nous intéresse

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    <?php
     
    namespace AppFoot\generalBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
    use AppFoot\UserBundle\Entity\User;
     
    /**
     * AppFoot\generalBundle\Entity\Rencontre
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="AppFoot\generalBundle\Entity\RencontreRepository")
     */
    class Rencontre
    {
     
     
         /**
         *@ORM\ManyToMany(targetEntity="AppFoot\UserBundle\Entity\User")
         */
        private $membres;
     
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        public function __construct($capitaine)
        {
            $this->membres = new \Doctrine\Common\Collections\ArrayCollection;
            $this->addMembre($capitaine);
     
        }
     
        public function getMembres()
        {
            return $this->membres;
        }
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Add membres
         *
         * @param AppFoot\UserBundle\Entity\User $membres
         */
        public function addMembre(\AppFoot\UserBundle\Entity\User $membres)
        {
            $this->membres[] = $membres;
        }
    }

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Mais Rencontre n'est pas lié a User ? un OneToMany sur le champs id_createur

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/03/2015, 17h16
  2. formulaire garde les anciennes valeurs
    Par psycho_xn dans le forum JSF
    Réponses: 11
    Dernier message: 15/09/2008, 18h32
  3. Où telecharger les anciennes versions de JDK?
    Par hugobob dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2005, 06h01
  4. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 15h59
  5. [7RC3] Compatibilité avec les anciennes versions ...
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/05/2003, 16h46

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