douju8113 2017-08-04 06:58
浏览 96
已采纳

如何在定制服务中获得Tempating或Container?

I have custom Service and I would like to use it in Twig templates. In Symfony < 3 I can do:

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

But in Symfony 3.3 I have error:

Cannot autowire service "AppBundle\Service\ViewService": argument "$container" of method "__construct()" references class "Symfony\Component\DependencyInjection\Container" but no such service exists. Try changing the type-hint to one of its parents: interface "Psr\Container\ContainerInterface", or interface "Symfony\Component\DependencyInjection\ContainerInterface".

  • 写回答

1条回答 默认 最新

  • duanqing3026 2017-08-04 07:15
    关注

    It's not good idea to inject whole container. Better is to inject single dependencies:

    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');
        }    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀