Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai une erreur class not found dans un controller et je n'arrive pas comprendre pourquoi, j'ai du oublier quelque chose ...
J'ai une entité User dans "module/Application/src/Application/Entity/User/User.php"
[lang=php] <?php namespace Application\Entity; use Doctrine\ORM\Mapping as ORM; /** @ORM\Entity */ class User { /** * @ORM\id * @ORM\GeneratedValue(strategy="AUTO") * @ORM\Column(type="integer") */ protected $id; /** * @ORM\Column(type="string") */ protected $fullname; public function getId(){ return $this->id; } public function setId($id){ $this->id = $id; } public function getFullname(){ return $this->fullname; } public function setFullname($fullname){ $this->fullname = $fullname; } } ?>
L'erreur survient quand je tente d'utiliser cette entité dans mon controller : "module/Application/src/Application/Controller/IndexController.php"
[lang=php] <?php namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; class IndexController extends AbstractActionController { public function indexAction() { $em = $this ->getServiceLocator() ->get('Doctrine\ORM\EntityManager'); $user = new \Application\Entity\User(); $user->setFullname('Marco Pivetta'); $em->persist($user); $em->flush(); } }
J'ai l'impression que tout est bon, j'ai bien spécifié le namespace dans l'entité User, je l'appelle bien dans le controller avec le chemin complet, je suis un peu perdu...
La page m'affiche cette erreur :
"Fatal error: Class 'Application\Entity\User' not found in /Site Internet/zf2-tutorial/module/Application/src/Application/Controller/IndexController.php on line 24"
Merci de votre aide !
Dernière modification par Orfeo (03-04-2014 22:26:28)
Hors ligne
Bonjour,
J'ai un doute mais essaye d'enlever le \Application lorsque tu fait ton new User() pour ton indexController, tu te trouve déjà dans ton namespace Application... c'est sur cette ligne que ça va pas... je pense.
Dernière modification par JGreco (04-04-2014 00:43:49)
Hors ligne
Non c'est pas ça, j'ai déjà essayé tous les chemins possibles même les plus improbables !
Pour compléter ma demande, j'ai également bien defini mon autoloader dans le fichier Module.php
[lang=php] public function getAutoloaderConfig() { return array( 'Zend\Loader\StandardAutoloader' => array( 'namespaces' => array( __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, ), ), ); }
Dernière modification par Orfeo (04-04-2014 07:36:12)
Hors ligne
Bonjour,
Quel est l’erreur en entière? la ligne de l’appelle ainsi que la classe qui n'est pas trouver n'est pas indiquer?
Sa dit juste "class not found" ?
Hors ligne
Orfeo a écrit:
La page m'affiche cette erreur :
"Fatal error: Class 'Application\Entity\User' not found in /Site Internet/zf2-tutorial/module/Application/src/Application/Controller/IndexController.php on line 24"
Hors ligne
Je pense que tu dois mettre le use Application\Entity\User. Si tu peux essayer.
Dernière modification par JGreco (04-04-2014 09:02:46)
Hors ligne
Non c'est pas ça, j'ai déjà essayé puis de toute façon j'appelle l'entité avec le chemin complet
[lang=php]$user = new \Application\Entity\User();
Le pire c'est quand dans l'autocomplétion de NetBeans, il me la trouve cette entité
Dernière modification par Orfeo (04-04-2014 09:04:54)
Hors ligne
Même si tu déclare le namespace, tu doit déclarer ton User
(Use ...\User; : ça t'évitera de mettre le chemin de ton fichier à chaque new
Ensuite il est plus que probable que la déclaration de ton user se fasse grâce à :
[lang=php] $user = new \Application\Entity\User\User();
Dernière modification par flobrflo (04-04-2014 09:10:38)
Hors ligne
flobrflo a écrit:
Même si tu déclare le namespace, tu doit déclarer ton User
(ça t'évitera de mettre le chemin de ton fichier à chaque new
Ensuite il est plus que probable que la déclaration de ton user se fasse grâce à :Code:
[lang=php] $user = new \Application\Entity\User\User();
Oui je sais, en fait j'ai testé un peu tous les cas de figure, avec et sans le use, avec et sans le chemin complet, j'ai copié collé le code source à un instant donné mais dans n'importe quel cas, j'ai l'erreur class not found... J'ai même essayé ce que tu m'as dit, sans succès ...
Il y a quelque chose, je sais pas quoi qui m'échappe ...
Hors ligne
Salut, c'est normal qu'il te trouve ton entité. A partir du moment où tu utilises les namespace l'IDE te faut l'autocomplétion à partir du namespace. Le problème c'est ton namespace :
module/Application/src/Application/Entity/User/User.php
namespace Application\Entity;
Non seulement ton entité user n'est pas dans le bon dossier. Elle devrait être dans module/Application/src/Application/Entity/User.php. Donc changes ta classe de dossier ou alors changes ton namespace pour être cohérent avec le dossier .
Hors ligne
Alors.. j'essairai bien de changer le namespace de ton fichier User.php
[lang=php] namespace Application\Entity\User;
Hors ligne
ah ben Orkin l'a dit avant moi
Hors ligne
C'était bien ça, merci beaucoup :-)
J'ai honte quand même c'était pas bien difficile mais je pense que par moment que le cache m'induit en erreur ...
Hors ligne