如何将AuthorizationCheckerInterface注入Symfony 4服务

时间:2018-02-14 22:08:08

标签: php symfony dependency-injection symfony4

首先:这是一个Symfony 4应用程序。

我有一个需要注入服务的控制台命令。

该服务需要AuthorizationChecker(AuthorizationCheckerInterface)。

如果我让autowiring做它的事情,在构造函数中使用类型提示,Symfony对此非常满意。不幸的是,构造函数需要两个附加参数,即字符串。

因此,我在services.yaml文件中添加了一个条目:

MyBundle\Utility:
  autowire: false
  arguments:
  - '@AuthorizationChecker' # or AuthorizationCheckerInterface
  - '%kernel.environment%'
  - '%kernel.cache_dir

Symfony现在抱怨:

  

服务" MyBundle \ Command \ ListCommand"依赖于不存在的服务" AuthorizationChecker"。

请注意,缺少AuthorizationChecker的服务是命令,而不是Utility。奇

更新1 : 已安装symfony / security组件:

grep -i security composer.json
        "symfony/security": "^4.0",

console debug:容器没有显示授权检查器:

$ console debug:container --show-private |grep -i checker
  config.resource.self_checking_resource_checker                                                             Symfony\Component\Config\Resource\SelfCheckingResourceChecker
  config_cache_factory                                                                                       Symfony\Component\Config\ResourceCheckerConfigCacheFactory
  dependency_injection.config.container_parameters_resource_checker                                          Symfony\Component\DependencyInjection\Config\ContainerParametersResourceChecker

那么,如何将授权检查程序注入我的服务?

0 个答案:

没有答案