首先:这是一个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
那么,如何将授权检查程序注入我的服务?