当前位置: 首页 > 知识库问答 >
问题:

如何在定制服务中获得临时或容器?

华旭
2023-03-14

我有自定义服务,我想在树枝模板中使用它。在交响乐

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\DependencyInject\Container"的参数"$容器",但不存在此类服务。尝试将type-hint更改为其父级之一:接口"Psr\Container\ContainerInterface",或接口"Symfony\Component\DependencyInject\ContainerInterface"。

共有1个答案

金飞
2023-03-14

注入整个容器不是个好主意。更好的方法是注入单一依赖项:

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');
    }    
}
 类似资料:
  • 问题内容: 如何在Node.js中获得最准确的时间戳? ps我的Node.js版本是0.8.X,而node-microtime扩展名对我不起作用(安装时崩溃) 问题答案: ?这给您一个以毫秒为单位的时间戳,这是JS给您的最准确的时间戳。 更新:正如vaughan所述,它可以在Node.js中使用- 它的分辨率为纳秒,因此它的分辨率更高,这并不意味着它必须更精确。 PS .:为了更清楚一点,返回一个

  • 问题内容: 使用以下选项启动Java应用程序时: Java使用临时端口,这对于避免冲突非常有用。 是否可以从应用程序内部以编程方式获取实际端口(或连接URL)? 问题答案: 这将打印如下网址

  • 我的要求是,如果用户使用Lucene搜索搜索“页码”,搜索结果应注意将结果中的页码与列表顶部的精确页码匹配。 现在在我的例子中,我尝试使用SortField进行排序- 假设我搜索了术语'5',然后在搜索结果中,而不是在列表的顶部显示精确页码匹配,它显示搜索的术语'5',它存在于每个页面上。 有人能建议如何在列表顶部的Lucene搜索结果中包含页码吗。 我的代码-

  • 问题内容: 我经常在Netty工作,但仍然有一个概念在暗示我,在教程等中找不到任何内容。首先,我确实了解Netty是异步的,但是客户端必须有一种方法来调用服务器,并且能够获得处理程序之外的响应。让我解释更多。 我有一个客户,如下图所示。并且请注意,我知道它是自举的,并且在每次调用时都会建立一个新的连接,这是为了使示例更小,更简洁。请忽略这个事实。 客户端.java 现在,我了解了如何获取服务器上的

  • 由于需要研究rtmp协议交互方式及报数据格式,使用nginx临时搭建一个rtmp服务器,主要通过nginx的rtmp扩展模块实现接收RTMP推送的音视频流,同时提供RTMP拉流服务的能力。