У меня есть собственный сервис, и я хотел бы использовать его в шаблонах Twig.
В Symfony < 3 я могу сделать:
use Symfony\Component\DependencyInjection\Container;
//...
public function __construct(Container $container)
{
$this->container = $container;
}
public function getView()
{
$this->container->get('templating')->render('default/view.html.twig');
}
Но в Symfony 3.3 у меня ошибка:
Не удается автоматически подключить службу «AppBundle \ Service \ ViewService»: аргумент
«Контейнер $» метода «__construct ()» ссылается на класс
«Symfony \ Component \ DependencyInjection \ Container», но такой службы нет
существует. Попробуйте изменить подсказку типа для одного из его родителей: интерфейс
«Psr \ Container \ ContainerInterface» или интерфейс
«Symfony \ Component \ внедрение зависимости \ ContainerInterface».
Это не очень хорошая идея вводить весь контейнер. Лучше ввести отдельные зависимости:
use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
class MyService
{
private $templating;
public function __construct(EngineInterface $templating)
{
$this->templating = $templating;
}
public function getView()
{
$this->templating->render('default/view.html.twig');
}
}
Других решений пока нет …