我正在用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/的博客文章