Я разрабатываю API с симфонией и fosrestbundle. Я также хочу использовать внедрение конструктора в свои контроллеры, как я всегда делаю, чтобы внедрить некоторый EntityRepository.
Проблема в том, что эта инъекция не работает, я получаю сообщение об ошибке, в котором говорится, что репозиторий ожидался, но его не дали.
Я кое-что понял: FOSRestBundle автоматически генерирует некоторый URL-адрес, но если я хочу использовать внедрение конструктора, эти URL-адреса должны использовать имя службы, которую я создал для своего контроллера. Например, если моя служба контроллера определена следующим образом:
services.yml
dnd_agent_controller:
class: DnD\RaHApiBundle\Controller\AgentController
arguments: ["@dnd_agent_repository"]
Тогда мои маршруты должны быть определены следующим образом:
маршрутизация.yml
agents_resource:
path: /agents
defaults: { _controller: dnd_agent_controller:getallAction}
Обратите внимание на поле _controller, оно использует имя службы, определенное выше, а не namespacebundle:controller:action, как всегда.
С этой конфигурацией моя инъекция конструктора работает, однако для меня это проблема, поскольку эти URL-адреса автоматически генерируются FOSRestBundle, и мне это нравится.
Есть ли способ использовать как внедрение конструктора в мои контроллеры, так и FOSRestBundle? Как бы я это сделал?
Спасибо!