Come implementare un baseclass per i controller di Symfony2
-
22-10-2019 - |
Domanda
Ci sono alcuni articoli in giro che toccano questo argomento, ma nessuno di loro sembrava essere una soluzione utilizzabile pratica per me. Il mio obiettivo è quello di mettere alcuni metodi di base (quelli che ho bisogno in ogni controller in ogni caso) in un BaseController, per es.
$this->getEntityManager();
$this->getRequest();
$this->getRepository($entityName);
Come si può fare?
Per quanto ne sappia dobbiamo iniettare i servizi nel BaseController, ma come faccio a dire le classi di utilizzare un servizio per la loro superclasse? C'è qualche articolo decente sui controller e Dependency Injection [1], ma alla fine mi sono bloccato con tale approccio anche vedere il mio commento qui: [2]
[1] http://miller.limethinking.co.uk / 2011/04/15 / Symfony2 controller-as-service /
[2] http: //miller.limethinking .it / 2011/04/15 / Symfony2 controller-as-service / # comment-579
Soluzione
pseudocodice
MyBaseController impliments Symfony\Component\Di\ContainerAwareInterface
setContainer($container)
$this->container = $container
getEntityManager
return $this->container->get('doctrine.orm.entity_manager')