Symfony 4:服务显示在控制台中,但不是自动注入

时间:2018-02-28 12:09:46

标签: symfony symfony4

hett@hett-pc:/data/projects/graylist$ ./bin/console  debug:container | grep client_manager
  fos_oauth_server.client_manager                alias for "fos_oauth_server.client_manager.default"                                     
  fos_oauth_server.client_manager.default        FOS\OAuthServerBundle\Document\ClientManager   

我可以在我的命令中使用该服务:

class TestCommand extends Command
{
    protected static $defaultName = 'test';
    private $clientManager;

    public function __construct(?string $name = null, \FOS\OAuthServerBundle\Document\ClientManager $clientManager)
    {
        $this->clientManager = $clientManager;
        parent::__construct($name);
    }
}

但是得到错误

  

无法自动装配服务“App \ Command \ TestCommand”:参数   方法“__construct()”的“$ clientManager”引用类   “FOS \ OAuthServerBundle \ Document \ ClientManager”但没有这样的服务   存在。它不能自动注册,因为它来自di
  fferent root namespace。

为什么?

我如何将默认服务与ClientManagerInterface相关联?

PS:我也试图注入ClientManagerInterface,但也遇到了同样的错误。

1 个答案:

答案 0 :(得分:0)

Opps,我发现答案比写问题更快:

此服务不支持自动装配,需要在services.yaml下面添加一行:

services:
    FOS\OAuthServerBundle\Model\ClientManagerInterface: '@fos_oauth_server.client_manager.default'