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 :

Classe non trouvée au chargement d'une entite [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut Classe non trouvée au chargement d'une entite
    Bonjour, je bloque sur un bug dans mon appli depuis hier après-midi
    Tout d'abord voici les deux lignes qui provoquent le bug:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $em = $this->getDoctrine()->getEntityManager();
    $post = $em->getRepository('Abds\BlogBundle\Entity\Bf_post')->find(2);
    Et voici le message d'erreur:

    Class Abds\UserBundle\Entity\Abds\UserBundle\Entity\Type does not exist
    500 Internal Server Error - ReflectionException
    Je vous explique le contexte:
    Deux bundle entrent en jeu: UserBundle (dont l'entite User étends l'entite user du FosUserBundle), et BlogBundle.

    Le BlogBundle contient l'entité Bf_post, que je tente de charger. Cette entite Bf_post est liée a l'entité User de Userbundle, comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
         * @ORM\ManyToOne(targetEntity="Abds\UserBundle\Entity\User")
         */
        private $user;
    L'entité User est liée a l’entité Type, qui est également dans le UserBundle (il y a plusieurs types d'utilisateurs), comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /**
         * @ORM\ManyToOne(targetEntity="Abds\UserBundle\Entity\Type")
         */
        private $type;
    Et donc quand je charge un post avec findAll(), s'il ne trouve rien il m'envoit bien null, mais s'il y a bien un post dans Bf_post, alors il m'envoit l'erreur renseignée plus haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Class Abds\UserBundle\Entity\Abds\UserBundle\Entity\Type does not exist
    500 Internal Server Error - ReflectionException
    Si quelqu'un avait une idée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Je mets ici les entites concernées en entier, au cas où ça pourrait aider à m'aider

    Bf_post (dans BlogBundle):
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
     
    <?php
     
    namespace Abds\BlogBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Abds\BlogBundle\Entity\Bf_post
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Abds\BlogBundle\Entity\Bf_postRepository")
     */
    class Bf_post
    {
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
       /**
         * @ORM\ManyToMany(targetEntity="Abds\BlogBundle\Entity\Bf_category", inversedBy="posts")
         * @ORM\JoinTable(name="Bf_post_category")
         */
        private $categories;
     
     
     
        /**
         * @var string $titre
         *
         * @ORM\Column(name="titre", type="string", length=255)
         */
        private $titre;
     
        /**
         * @var string $chapeau
         *
         * @ORM\Column(name="chapeau", type="string", length=255)
         */
        private $chapeau;
     
        /**
         * @var text $contenu
         *
         * @ORM\Column(name="contenu", type="text")
         */
        private $contenu;
     
        /**
         * @var boolean $is_valid
         *
         * @ORM\Column(name="is_valid", type="boolean")
         */
        private $is_valid;
     
        /**
         * @var datetime $created_at
         *
         * @ORM\Column(name="created_at", type="datetime")
         */
        private $created_at;
     
        /**
         * @var integer $view_number
         *
         * @ORM\Column(name="view_number", type="integer")
         */
        private $view_number;
     
        /**
         * @ORM\ManyToOne(targetEntity="Abds\UserBundle\Entity\User")
         */
        private $user;
     
     
        public function __construct() {
            $this->categories = new \Doctrine\Common\Collections\ArrayCollection();
        }
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set titre
         *
         * @param string $titre
         */
        public function setTitre($titre)
        {
            $this->titre = $titre;
        }
     
        /**
         * Get titre
         *
         * @return string 
         */
        public function getTitre()
        {
            return $this->titre;
        }
     
        /**
         * Set chapeau
         *
         * @param string $chapeau
         */
        public function setChapeau($chapeau)
        {
            $this->chapeau = $chapeau;
        }
     
        /**
         * Get chapeau
         *
         * @return string 
         */
        public function getChapeau()
        {
            return $this->chapeau;
        }
     
        /**
         * Set contenu
         *
         * @param text $contenu
         */
        public function setContenu($contenu)
        {
            $this->contenu = $contenu;
        }
     
        /**
         * Get contenu
         *
         * @return text 
         */
        public function getContenu()
        {
            return $this->contenu;
        }
     
        /**
         * Set is_valid
         *
         * @param boolean $isValid
         */
        public function setIsValid($isValid)
        {
            $this->is_valid = $isValid;
        }
     
        /**
         * Get is_valid
         *
         * @return boolean 
         */
        public function getIsValid()
        {
            return $this->is_valid;
        }
     
        /**
         * Set created_at
         *
         * @param datetime $createdAt
         */
        public function setCreatedAt($createdAt)
        {
            $this->created_at = $createdAt;
        }
     
        /**
         * Get created_at
         *
         * @return datetime 
         */
        public function getCreatedAt()
        {
            return $this->created_at;
        }
     
        /**
         * Set view_number
         *
         * @param integer $viewNumber
         */
        public function setViewNumber($viewNumber)
        {
            $this->view_number = $viewNumber;
        }
     
        /**
         * Get view_number
         *
         * @return integer 
         */
        public function getViewNumber()
        {
            return $this->view_number;
        }
     
        public function getUser()
        {
            return $this->user;
        }
     
        public function setUser(Abds\UserBundle\Entity\User  $user)
        {
            $this->user = $user;
        }
     
        public function getCategories()
        {
            return $this->categories;
        }
     
        public function addCategory(Abds\BlogBundle\Entity\Bf_category $category)
        {
            $this->categories[] = $category;
            $category->addPost($this);
        }
     
     
     
    }
    User (dans UserBundle):

    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
     
    <?php
     
    namespace Abds\UserBundle\Entity;
     
    use FOS\UserBundle\Entity\User as BaseUser;
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Abds\UserBundle\Entity\Message
     * @ORM\Entity
     * @ORM\Table(name="fos_user")
     */
    class User extends BaseUser
    {
        /**
         * @ORM\ManyToOne(targetEntity="Abds\UserBundle\Entity\Type")
         */
        private $type;
     
        /**
         * @ORM\ManyToOne(targetEntity="Abds\UserBundle\Entity\Civilite")
         */
        private $civilite;
     
        /**
         * @ORM\ManyToOne(targetEntity="Abds\UserBundle\Entity\Region")
         */
        private $region;
     
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
     
        public function __construct()
        {
            parent::__construct();
            // your own logic
        }
     
        public function getType()
        {
            return $this->type;
        }
     
        // Ici, on force le type de l'argument à être une instance de notre entité Client.
        public function setType( Abds\UserBundle\Entity\Type $type)
        {
            $this->type = $type;
        }
     
        public function getCivilite()
        {
            return $this->civilite;
        }
     
        public function setGenre(Abds\UserBundle\Entity\Civilite  $civilite)
        {
            $this->civilite = $civilite;
        }
     
        public function getRegion()
        {
            return $this->region;
        }
     
        public function setRegion(Abds\UserBundle\Entity\Region  $region)
        {
            $this->region = $region;
        }
    }
    Type (dans UserBundle):

    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
     
    <?php
     
    namespace Abds\UserBundle\Entity;
     
    use Doctrine\ORM\Mapping as ORM;
     
    /**
     * Abds\UserBundle\Entity\Type
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="Abds\UserBundle\Entity\TypeRepository")
     */
    class Type
    {
        /**
         * @var integer $id
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
     
        /**
         * @var string $nom
         *
         * @ORM\Column(name="nom", type="string", length=30)
         */
        private $nom;
     
     
        /**
         * Get id
         *
         * @return integer 
         */
        public function getId()
        {
            return $this->id;
        }
     
        /**
         * Set nom
         *
         * @param string $nom
         */
        public function setNom($nom)
        {
            $this->nom = $nom;
        }
     
        /**
         * Get nom
         *
         * @return string 
         */
        public function getNom()
        {
            return $this->nom;
        }
    }

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Par défaut
    Bonjour,

    As-tu bien lu le message d'erreur et notamment le chemin menant à ton entité ?

    Tu définis un espace de nom, utilise-le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
        $post = $em->getRepository('BlogBundle:Bf_post')->find(2);
    ?>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Citation Envoyé par Francesco34 Voir le message
    Bonjour,

    As-tu bien lu le message d'erreur et notamment le chemin menant à ton entité ?

    Tu définis un espace de nom, utilise-le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
        $post = $em->getRepository('BlogBundle:Bf_post')->find(2);
    ?>
    Bonjour, merci de ton aide

    En fait c'est ce que j'avais mis en premier (AbdsBlogBundle:Bf_post pour être plus précis), mais ça me donne exactement le même message d'erreur. Et l'erreur semble être liée à l'entité Type, qui est liée à User, qui est lié à Bf_post, c'est ce que j'ai du mal à comprendre...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Par défaut
    L'utilisation des espaces de noms était juste un conseil, pas la solution

    L'erreur renvoyée te montre bien que le chemin n'est pas le bon, une partie étant doublée. Il te faut donc voir où apparaissent les chemins.

    Par exemple, la méthode setType dans ton entité User. Essaye de rajouter un"\" avant "Abds" et cela devrait s'arranger.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Citation Envoyé par Francesco34 Voir le message
    L'utilisation des espaces de noms était juste un conseil, pas la solution

    L'erreur renvoyée te montre bien que le chemin n'est pas le bon, une partie étant doublée. Il te faut donc voir où apparaissent les chemins.

    Par exemple, la méthode setType dans ton entité User. Essaye de rajouter un"\" avant "Abds" et cela devrait s'arranger.
    Ok ! Au temps pour moi En fait j'avais mis le namespace en entier pour voir si ça changeait quelque chose...

    J'ai rajouté l'antislash et effectivement maintenant ça marche !
    Mais j'ai pas bien compris pourquoi? Est-ce qu'il faut systématiquement mettre un antislash au début des namespace quand ils servent à caster un parametre d'une fonction?

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

Discussions similaires

  1. [Assembly] Classe non trouvée
    Par zsoh dans le forum Framework .NET
    Réponses: 2
    Dernier message: 11/09/2006, 13h03
  2. Classe non trouvé TWebBrowser
    Par Aloneghost dans le forum Web & réseau
    Réponses: 1
    Dernier message: 18/04/2006, 20h51
  3. [ORACLE9i][XML]:ORA-29540: classe non trouvée
    Par anaon dans le forum Oracle
    Réponses: 8
    Dernier message: 15/11/2005, 20h02
  4. [Plugin] Classe non trouvée au runtime
    Par toto_toto dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 15/02/2005, 10h36
  5. [debutant][Classpath][Linux] Classe non trouvée
    Par oghma777 dans le forum Général Java
    Réponses: 5
    Dernier message: 15/10/2004, 21h26

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