我有一个类名为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".").
我如何使用该服务:
{{ render(controller('xxBundle:Widget:renderNews', {'slice_length': 250})) }}
xxBundle:Widget:renderNews
中的:$articles = $this->get('portal.news')->getNewestArticles($count);
答案 0 :(得分:2)
您可能忘记将public: true
设置为您的服务,因为从3.4开始,默认情况下所有Symfony服务都是私有的。
此外,您应该避免使用$this->get()
函数,而是希望直接从控制器参数中获取服务
<?php
use xxx\NewsBundle\Service\NewsService
class MyController {
public function myAction(NewsService $service) {}
}
答案 1 :(得分:-1)