Symfony 3.4:找不到正确配置的服务

时间:2018-01-21 12:53:59

标签: php symfony symfony-3.4

我有一个类名为NewsService的服务类。

该服务配置如下:

services:
    portal.news:
        class: xxx\NewsBundle\Service\NewsService
        arguments: ["@doctrine.orm.entity_manager"]

我使用Phpstorm和symfony插件 - 插件找到服务,但Symfony本身没有。

我收到以下错误消息:

An exception has been thrown during the rendering of a template ("You have requested a non-existent service "portal.news".").

我如何使用该服务:

  1. {{ render(controller('xxBundle:Widget:renderNews', {'slice_length': 250})) }}
  2. 控制器xxBundle:Widget:renderNews中的
  3. $articles = $this->get('portal.news')->getNewestArticles($count);

    • 缓存已清除
    • 我检查了所有内容(错误的服务配置,捆绑已加载,语法正常,...)

2 个答案:

答案 0 :(得分:2)

您可能忘记将public: true设置为您的服务,因为从3.4开始,默认情况下所有Symfony服务都是私有的。

此外,您应该避免使用$this->get()函数,而是希望直接从控制器参数中获取服务

<?php 
use xxx\NewsBundle\Service\NewsService
class MyController {
    public function myAction(NewsService $service)  {}
}

答案 1 :(得分:-1)