Контроллер FOSRestBundle как служба не работает

Я разрабатываю 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? Как бы я это сделал?

Спасибо!


person danielrvt    schedule 13.03.2015    source источник


Ответы (1)


Да, используйте стиль маршрутизации FOSRestBundle, но с именем службы.

Маршрутизация, например.

agents_resource:
    type: rest
    resource: dnd_agent_controller

EDIT: сообщение в блоге с примером http://blog.dashboardhub.io/2015/09/26/symfony-controller-not-extending-fosrest-bundle/

person Eddie Jaoude    schedule 25.09.2015