Symfony2路由:导入所有控制器的注释但是排除一个(NelmioApiDoc中的重复路由)

时间:2015-03-31 09:21:51

标签: symfony symfony-routing

问题

当我们在routing.yml中定义时:

my_controllers:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /

my_api:
    resource:    'MyBundle\Controller\ApiController'
    type:        rest
    prefix:      /api
    name_prefix: my_api_
    options:
        expose: true

我们在NelmioApiDoc中获得了重复的路线:

enter image description here

问题

我们应该如何做到这一点,以便来自ApiController的路由不会重复?

  • 从"通配符"中排除ApiController资源导入?
  • 单独导入所有其他控制器?
  • 其他解决方案?

1 个答案:

答案 0 :(得分:5)

你在Nelmio ApiDoc中获得重复的条目,因为Symfony中实际存在重复的路由。执行此命令以查看Symfony中的每个路由,包括您的API路径(将显示/api前缀且不带前缀):

php app/console router:debug

正如Yann所说,我认为最好的方法是为您的API控制器创建一个单独的目录(类似@MyBundle/ControllerRest/)并将它们放在那里。然后,不要忘记更新my_apirouting.yml部分下的资源路径以及API控制器中的命名空间。

这样你就可以摆脱重复的路线,因此ApiDoc每次通话只会显示一条路线,而不是两条。