可以在路由中使用 DIC 中的参数吗?(方法参数注入)
-
22-10-2019 - |
题
我的 Symfony2 项目中有一些服务被某个标签击中,我想在控制器内部使用它们。
因此,我试图找出将它们传递给控制器的最佳方法,并认为也许有一种方法可以通过 Symfony2 的整体配置系统来做到这一点。
# Inside routing.yml:
my_controller:
pattern: "/path"
defaults {
_controller: Bundle:Controller:action
# The following line is kind of what I'm looking for.
myParam: @my.tag
}
# Inside a services.yml file:
my.service:
class: Bundle\MyService
tags:
- { name: my.tag }
my.otherService:
class: Bundle\MyOtherService
tags:
- { name: my.tag }
鉴于上面的两个配置文件示例,我希望我的“Bundle:Controller:action”实例接收一个包含“Bundle\MyService”和“Bundle\MyOtherService”实例的数组。
谢谢!
解决方案
谷歌群组上的讨论 已得出解决方案。不过,部分 API 已发生变化。即:
- 您重写的捆绑方法是 build(),而不是 registerExtensions()。
- 您重载的扩展方法是 load() 而不是 configLoad()。
只要您相应地移动这两个代码块并正确实现它,您应该能够获得符合我想要的功能的东西。
遗憾的是,DIC 并没有以任何方式自动执行此操作,但值得注意的是,我确实需要获取特定标签的所有内容。不仅来自我的捆绑包,而且来自最终成为应用程序一部分的每个捆绑包。
不隶属于 StackOverflow