En lugar de extender el controlador estándar, me gustaría inyectar a Twig en una de mis clases.Inyectar Twig como un servicio en Symfony2
controlador:
namespace Project\SomeBundle\Controller;
use Twig_Environment as Environment;
class SomeController
{
private $twig;
public function __construct(Environment $twig)
{
$this->twig = $twig;
}
public function indexAction()
{
return $this->twig->render(
'SomeBundle::template.html.twig', array()
);
}
}
y luego en services.yml
Tengo el siguiente:
project.controller.some:
class: Project\SomeBundle\Controller\SomeController
arguments: [ @twig ]
El error que estoy recibiendo es:
SomeController :: __ construct () debe ser una instancia de Twig_Environment, ninguno dado
Pero estoy pasando en @twig
a través de config
. No puedo ver lo que estoy haciendo mal.
Editar:
Añadiendo el código correcto - esto es lo que fija el problema:
// in `routing.yml` refer to the service you defined in `services.yml`
project.controller.some
project_website_home:
pattern:/
defaults: { _controller: project.controller.some:index }
Esto parece bastante viejo, pero me preguntaba cómo era usted capaz de registrar todas las extensiones Twig, la el código generado por SF2 tiene -> addExtension para agregar esos dinámicamente. –