Вместо расширения стандартного контроллера я хотел бы ввести Twig в один из моих классов.Injecting Twig как услуга в Symfony2
Контроллер:
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()
);
}
}
, а затем в services.yml
У меня есть следующие:
project.controller.some:
class: Project\SomeBundle\Controller\SomeController
arguments: [ @twig ]
Ошибка я получаю это:
SomeController :: __ конструкт () должен быть экземпляром Twig_Environment, но не указан
Но я прохожу @twig
через config
. Я не вижу, что я делаю неправильно.
Edit:
Добавление правильный код - это то, что исправили проблему:
// 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 }
Это кажется довольно старый, но мне было интересно, как вам удалось зарегистрировать все Twig расширений, Сгенерированный код SF2 имеет -> addExtension, чтобы добавить их динамически. –