Можете ли вы использовать параметры из 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».
Спасибо!
Решение
Это обсуждение групп Google привел к решению. Некоторые из API, однако, изменились. А именно:
- Метод пакета, который вы переопределяете, - это build (), а не registerextensions ().
- Метод расширения, который вы перегружаете, - это загрузка () не configload ().
Пока вы соответствующим образом перемещаете два блока кода и правильно его реализуете, вы сможете получить что -то вроде желаемой функциональности.
К сожалению, это никоим образом не автоматизировано DIC, но важно отметить, что у меня есть требование получить все конкретное тег. Не только от моего пакета, но и от каждого пакета, в конечном итоге, становясь частью приложения.