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

报告相同问题?

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?