我正在用fosrestbundle交响乐开发一个api。我也想在控制器中使用构造函数注入,就像我总是要注入一些EntityRepository一样。
问题是该注入无法正常工作,我收到一条错误消息,提示应有存储库,但未提供任何存储库。
我想出了一些办法:FOSRestBundle自动生成一些URL,但是如果我想使用构造函数注入,则这些URL必须使用我为控制器创建的服务的名称。例如,如果我的控制器服务是这样定义的:
services.yml

dnd_agent_controller:
    class: DnD\RaHApiBundle\Controller\AgentController
    arguments: ["@dnd_agent_repository"]

然后必须这样定义我的路线:
routing.yml
agents_resource:
  path: /agents
  defaults: { _controller: dnd_agent_controller:getallAction}

注意_controller字段,它使用上面定义的服务名称,而不是像往常一样使用namespacebundle:controller:action。
通过这种配置,我的构造函数注入可以正常工作,但是对我来说这是一个问题,因为该URL由FOSRestBundle自动生成,我喜欢这样。
有没有一种方法可以同时使用控制器和FOSRestBundle中的构造函数注入?我该怎么办?
谢谢!

最佳答案

是的,请使用FOSRestBundle路由样式,但要使用服务名称。

路由
例如。

agents_resource:
    type: rest
    resource: dnd_agent_controller


编辑:带有示例http://blog.dashboardhub.io/2015/09/26/symfony-controller-not-extending-fosrest-bundle/的博客文章

09-11 19:45