Как получить Tempating или Контейнер в пользовательском Сервисе?

У меня есть собственный сервис, и я хотел бы использовать его в шаблонах 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».

3

Решение

Это не очень хорошая идея вводить весь контейнер. Лучше ввести отдельные зависимости:

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');
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]