我的 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 并没有以任何方式自动执行此操作,但值得注意的是,我确实需要获取特定标签的所有内容。不仅来自我的捆绑包,而且来自最终成为应用程序一部分的每个捆绑包。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top