我有自定义服务,我想在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()”的“$ container”引用类 “Symfony \ Component \ DependencyInjection \ Container”但没有这样的服务 存在。尝试将type-hint更改为其父级之一:interface “Psr \ Container \ ContainerInterface”或接口 “的Symfony \元器件\ DependencyInjection \ ContainerInterface”。
答案 0 :(得分:0)
这是not good idea to inject whole container。更好的是注入单个依赖项:
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');
}
}