Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony2][Collection] Erreur de namespace ?

    20 mars 2014 à 16:29:09

    Bonjour amis zéro (si on peut toujours dire ça comme ça).

    J'ai un gros (énorme en fait) problème avec une classe doctrine :

    The class 'Doctrine\Common\Collections\ArrayCollection' was not found in the chain configured namespaces ***\Bundle\EtablissementsBundle\Entity, ***\Bundle\EspecesBundle\Entity, ***\Bundle\SaisiesBundle\Entity, ***\Bundle\MediasBundle\Entity, ***\Bundle\UsersBundle\Entity, ***\Bundle\MaintenanceBundle\Entity, ***\Bundle\NotificationsBundle\Entity
    500 Internal Server Error - MappingException 

    En gros, il me liste toutes les entités où j'ai un ArrayCollection. Le plus étrange c'est que ça arrive seulement sur une seul action de tous le site et toutes les autres fonctionnent bien ....

    Ca se déroule sur l'édition d'un "groupe". Je ne peux pas trop mettre de code, mais le coeur y est :D

    • Partager sur Facebook
    • Partager sur Twitter
      20 mars 2014 à 17:05:34

      C'est bon j'ai trouvé avec l'aide de quelqu'un. C'est que j'ai dans mon entité une relation ManyToMany et que j'essaye de lui lancer un ArrayCollection au lieu de l'entité demandée. celà par ce que j'utilise un ModelTransformer. D'ailleurs une idée pour éviter ça ?

      Model Transformer : 
      
      
          /**
           * @param mixed $noms
           * @return ArrayCollection
           * @throws \Symfony\Component\Form\Exception\UnexpectedTypeException
           * @throws \Symfony\Component\Form\Exception\TransformationFailedException
           */
          public function reverseTransform($noms)
          {
              $especes = new ArrayCollection();
      
              if ('' === $noms || null === $noms) {
                  return $especes;
              }
      
              if (!is_string($noms)) {
                  throw new UnexpectedTypeException($noms, 'string');
              }
              $nomsArray = explode(", ", $noms);
              foreach ($nomsArray as $nom) {
                  $espece = $this->om->getRepository('EspecesBundle:Espece')->findOneByNom($nom);
                  if (null === $espece) {
                      throw new TransformationFailedException(sprintf(
                          'Le problème avec l\'espèce "%s" ne peut pas être trouvé !',
                          $nom
                      ));
                  }
                  $especes->add($espece);
              }
              return $especes;
          }
      FormBuilde :
      
      /**
           * @param FormBuilderInterface $builder
           * @param array $options
           */
          public function buildForm(FormBuilderInterface $builder, array $options)
          {
              $entityManager = $options['em'];
              $transformer = new EspecesToIdsTransformer($entityManager);
              $builder
                  ->add('nom', 'text', array(
                      'attr' => array(
                          'class' => 'form-control max_length',
                          'placeholder' => 'Nom'
                      ),
                      'label' => 'Nom',
                      'max_length' => '255',
                      'label_attr' => array(
                          'class' => 'col-sm-2 control-label'
                      )
                  ))
                  ->add(
                      $builder->create('especes', 'text', array(
                          'attr' => array(
                              'class' => 'form-control tokenfield-typeahead',
                              'placeholder' => 'Tapez les 3 premières lettres du nom de l\'espèce ...'
                          ),
                          'label' => 'Especes',
                          'label_attr' => array(
                              'class' => 'col-sm-2 control-label'
                          )
                      ))->addModelTransformer($transformer)
                  )
                  ->add('Envoyer','submit',array(
                      'attr' => array(
                          'class' => 'btn btn-default'
                      )
                  ))
              ;
          }




      -
      Edité par Jimbo73 20 mars 2014 à 17:06:08

      • Partager sur Facebook
      • Partager sur Twitter

      [Symfony2][Collection] Erreur de namespace ?

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown