Можно ли использовать параметры из DIC в маршрутах? (инъекция параметра метода)

У меня есть несколько сервисов, которые попадают под определенный тег в моем проекте 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».

Спасибо!


person Alexander Trauzzi    schedule 04.09.2011    source источник


Ответы (1)


Обсуждение групп Google привело к решению. Однако некоторые API изменились. А именно:

  • Метод пакета, который вы переопределяете, это build(), а не registerExtensions().
  • Метод расширения, который вы перегружаете, это load(), а не configLoad().

Пока вы соответствующим образом переместите два блока кода и правильно его реализуете, вы сможете получить что-то вроде той функциональности, которую я хочу.

К сожалению, это никоим образом не автоматизировано DIC, но важно отметить, что у меня есть требование получить все из определенного тега. Не только из моего пакета, но и из каждого пакета, который в конечном итоге становится частью приложения.

person Alexander Trauzzi    schedule 04.09.2011