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 :

Expected an object, but got a collection [2.x]


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
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut Expected an object, but got a collection
    Bonjour,

    J'ai un petit problème assez étrange.

    J'ai un controller EventController
    avec ce code :
    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
     
    public function createAction()
        {
            $entity  = new Event();
            $request = $this->getRequest();
            $form    = $this->createForm(new EventType(), $entity);
            $form->bindRequest($request);
     
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getEntityManager();
                $em->persist($entity);
                $em->flush();
     
                return $this->redirect($this->generateUrl('Event_show', array('id' => $entity->getId())));
     
            }
     
            return array(
                'entity' => $entity,
                'form'   => $form->createView()
            );
        }
    j'ai cette route :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    New_Event:
        pattern:  /New_Event
        defaults: { _controller: ApplyTechBundle:Event:create }
    et lorsque je vais sur la page correspondante j'ai ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Expected an object, but got a collection. Did you forget to pass "multiple=true" to an entity field?
    500 Internal Server Error - InvalidArgumentException

  2. #2
    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
    Il semble que la solution se trouve dans ta classe de formulaire EventType, peux-tu nous en montrer le code ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut
    La voila :
    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 Apply\TechBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class EventType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('name')
                ->add('desc')
                ->add('dateDebut')
                ->add('dateFin')
                ->add('actif')
                ->add('taille')
                ->add('mark')
                ->add('type')
                ->add('admin')
                ->add('utilisateur')
            ;
        }
     
        public function getName()
        {
            return 'apply_techbundle_eventtype';
        }
    }

  4. #4
    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
    Donc si j'ai bien compris, tu laisses Symfony décider lui-même quel type de champ choisir pour les éléments de ton formulaire ?
    => Déjà ça me semble risqué, reprendre le contrôle là-dessus serait un bon début...

    Ensuite, il doit s'agir d'un champ de ton entité qui doit défini comme une relation (utilisateur peut-être), il nous faut le code ton entité Et tant qu'à faire le code de la vue de ton formulaire...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 27
    Par défaut
    Je les donne :

    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
     
    <h1>Event creation</h1>
     
    <form action="{{ path('event_create') }}" method="post" {{ form_enctype(form) }}>
        {{ form_widget(form) }}
        <p>
            <button type="submit">Create</button>
        </p>
    </form>
     
    <ul class="record_actions">
        <li>
            <a href="{{ path('event') }}">
                Back to the list
            </a>
        </li>
    </ul>
    et mon entity event:
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    <?php
    namespace Apply\techBundle\Entity;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Validator\Constraints as Assert;
    use Apply\UsersBundle\Entity\Utilisateur;
     
    /**
     * @ORM\Entity
     */
    class Event
    {
    		/**
    		 * @ORM\GeneratedValue
    		 * @ORM\Id
    		 * @ORM\Column(type="integer")
    		 * @ORM\GeneratedValue(strategy="AUTO")
    		 */
    		private $id;
     
    		/**
    		 * @ORM\Column(type="string",length="45")
    		 * @Assert\NotBlank()
    		 */  
    		private $name;
     
    		/**
    		 * @ORM\Column(type="string",length="255")
    		 * @Assert\NotBlank()
    		 */  
    		private $desc;
     
    		/**
    		 * @ORM\Column(type="date")
    		 * @Assert\NotBlank()
    		 */ 
    		private $dateDebut;
     
    		/**
    		 * @ORM\Column(type="date")
    		 * @Assert\NotBlank()
    		 */ 
    		private $dateFin;
     
    		/**
    		 * @ORM\Column(type="string",length="1")
    		 * @Assert\Choice(choices = {"T", "F"})
    		 */ 
    		private $actif;
     
    		/**
    		 * @ORM\Column(type="string",length="255")
    		 */
    		private $taille;
     
    		/**
    		 * @ORM\ManyToOne(targetEntity="Marker")
    		 */ 
    		private $mark;
     
    		/**
    		 * @ORM\ManyToOne(targetEntity="Type")
    		 */ 
    		private $type;
     
    		/**
    		 * @ORM\ManyToMany(targetEntity="Admin")
    		 */ 
    		private $admin;
     
    		/**
    		 * @ORM\ManyToOne(targetEntity="Apply\UsersBundle\Entity\Utilisateur", inversedBy="Event")
    		 * @ORM\JoinColumn(name="utilisateur_id", referencedColumnName="id")
    		 *
    		 * @var Utilisateur $Utilisateur
    		 */
    		private $utilisateur;
     
     
        public function __construct()
        {
            $this->admin = new \Doctrine\Common\Collections\ArrayCollection();
        $this->utilisateur = new \Doctrine\Common\Collections\ArrayCollection();
        }
     
     
    }
    Je vous épargne les get et les set

  6. #6
    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
    Ta relation ManyToMany sur le champ $admin semble incomplète, il faut au moins indiquer la table associative entre tes 2 entités.
    => Et ton problème de collection/entity provient probablement d'ici...

    Et la valeur de l'attribut inversedBy sur ta relation ManyToOne sur le champ $utilisateur me semble fausse... Si tu n'as pas de référence à Event sur ton entité Utilisateur, enlève l'inversedBy sur le champ $utilisateur...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/06/2012, 15h40
  2. Réponses: 4
    Dernier message: 03/04/2012, 11h25
  3. Erreur Declaration expected but identifier ?
    Par dederfred dans le forum Delphi
    Réponses: 1
    Dernier message: 15/11/2006, 08h33
  4. Erreur Object Expected
    Par outshined dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/10/2006, 12h12
  5. Probleme Object Error Expected sur un OnClick
    Par herbert dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/07/2006, 20h24

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