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

Wir*_*one 3 symfony symfony-routing

问题

当我们定义routing.yml:

my_controllers:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /
Run Code Online (Sandbox Code Playgroud)

和:

my_api:
    resource:    'MyBundle\Controller\ApiController'
    type:        rest
    prefix:      /api
    name_prefix: my_api_
    options:
        expose: true
Run Code Online (Sandbox Code Playgroud)

我们得到重复的路线NelmioApiDoc:

在此输入图像描述

这个问题

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

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

Jua*_*ina 5

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

php app/console router:debug
Run Code Online (Sandbox Code Playgroud)

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

这样你就可以摆脱重复的路线,因此ApiDoc只会显示每个呼叫一个路由,而不是两个.