我在symfony 2.6中有一个名为ge_lib
的服务设置,如下所示
ge_lib:
class: GE\RestBundle\Services\GELib
arguments: [@session, @doctrine.orm.entity_manager, @manage_ge_proc]
在GELib.php中,我需要使用另一个服务manage_ge_proc
中的函数
manage_ge_proc:
class: GE\RestBundle\Services\GEManageProcedure
arguments: [@doctrine.orm.entity_manager, @manage_ge_native_query]
如果我尝试这样使用它,它就不起作用
$emailInv = $this->get('manage_ge_proc');
$sendStatus = $emailInv->pSendGeneralEmail(.....);
它给出错误消息,说找不到该名称的任何get函数。通常这个-〉$this->get('manage_ge_proc');
在任何控制器中都可以工作。但是我如何在服务中使用它呢?
我尝试了$this->getContainer()->get('manage_ge_proc');
,但没有效果。
1条答案
按热度按时间pxq42qpu1#
此调用正在从DI容器中获取服务,而您的服务中没有该容器
它在控制器中工作,因为DI容器被自动注入到那里。
因为
services.yml
中有这一行,它告诉Symfony将@manage_de_proc
服务注入ge_lib
构造函数您应该能够从构造函数中选择
@manage_ge_proc
,如下所示: