Necesitaba mover mi modelo desde el método del controlador, así que recibí ayuda para cambiarlo a un servicio. El servicio en sí mismo funciona, pero necesito poder conectarme a la doctrina y al kernel desde el interior de este servicio. Al principio intenté habilitar la doctrina, pero eso creó problemas. ¿Cómo puedo hacer que esto funcione? Seguí los documentos y obtuve este código. No tengo idea de por qué recibí el error a continuación. De forma anticipada, muchas gracias por su ayuda.Servicio DependencyInjection en Symfony2
Mi config es:
CSVImport.php
namespace Tools\TFIBundle\Model;
use Doctrine\ORM\EntityManager;
class CSVImport {
protected $em;
public function __construct(EntityManager $em) {
$this->em = $em;
}
app/config/config.yml
services:
csvimport:
class: Tools\TFIBundle\Model\CSVImport
arguments: [ @doctrine.orm.entity_manager ]
acción en el controlador
$cvsimport = $this->get('csvimport');
MI ERROR
Catchable Fatal Error: Argument 1 passed to
Tools\TFIBundle\Model\CSVImport::__construct() must be an instance of
Doctrine\ORM\EntityManager, none given, called in
.../Tools/TFIBundle/Controller/DefaultController.php on line 58 and defined in
.../Tools/TFIBundle/Model/CSVImport.php line 12
EDITAR, mi código de trabajo:
código de clase de servicio con el núcleo unido a ella
namespace Tools\TFIBundle\Model;
use Doctrine\ORM\EntityManager,
AppKernel;
class CSVImport {
protected $em;
protected $kernel;
protected $cacheDir;
public function __construct(EntityManager $em, AppKernel $k) {
$this->em = $em;
$this->kernel = $k;
}
esta pista me ayudó a encontrar un problema real, la configuración estaba bien, pero recibí un código de controlador de llamada incorrecta a ese servicio que cometió esos errores. – nysander
Lo mismo funcionó para obtener la conexión DBAL. ¿Alguien puede explicar cuál es la lógica detrás de esto? – Robert