Comment puis-je ajouter le Gestionnaire d'Entité à une classe personnalisée ou d'un service?
Dans Symfony2, comment puis-je ajouter de la Doctrine de l'entité gestionnaire d'une classe personnalisée ou d'un service?
J'ai essayé $em = $this->get("doctrine.orm.entity_manager");
et $em = $this->getDoctrine()->getEntityManager();
Deux échoué, ce qui m'a amené à tester et étendre la classe de Contrôleur avec ma classe personnalisée/service, et qui est mort dans un gigantesque boule de feu.
OriginalL'auteur Nick | 2011-11-05
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'injecter de l'entité gestionnaire de service à votre service personnalisé. Votre définition de service devrait ressembler à ceci:
Assurez-vous que votre service est
__construct
méthode utilise le gestionnaire d'entité comme un argument.Voir le Conteneur de Service chapitre pour plus d'info.
BTW,
$this->getDoctrine()
est une méthode de raccourci qui ne fonctionne que dans une classe qui étend la classeSymfony\Bundle\FrameworkBundle\Controller\Controller
OriginalL'auteur Steven Mercatante
Vous ne pas définir votre appareil en tant que service pour accéder à l'EntityManager. Le
Controller::getDoctrine()
méthode mentionnée ci-dessus renvoie simplement la Doctrine de Registre en appelant$this->container->get('doctrine')
après avoir vérifié que la doctrine de service est actuellement disponible.Il suffit de faire votre classe personnalisée/contrôleur de prolonger
ContainerAware
et de définir une méthode de raccourci comme:Noter que c'est
$this->container->get(..)
et pas$this->get(..)
dans une classe étendant/la mise en œuvre deContainerAware
.ContainerAware
, merci!Travailler comme un charme ! Merci mate 🙂
J'obtiens un "Appel à un membre de la fonction get() sur un non-objet dans ..." lors de l'utilisation de la méthode ci-dessus.
etendez-vous
ContainerAware
?Où est ContainerAware?
OriginalL'auteur dylan oliver