Symfony 2 - “内部”捆绑包路由


Symfony 2 - "Internal" bundle routing

有没有办法从捆绑包本身注册捆绑包的路由而不将其导入主路由文件中?现在我的routing.yml看起来像这样:

my_route:
    resource: "@MyExampleAdhocBundle/Resources/config/routing.yml"
    prefix:   /

但是,我想以某种方式在 ExampleBundle 类或捆绑包配置中启用捆绑包路由,因此只有在 AppKernel 中注册了捆绑包时,它才会打开。

您是否尝试过在您的捆绑扩展文件(AcmeDemoExtension for the AcmeBudle)中执行此操作?

我认为你应该看看Kernel::buildContainer内部,了解它是如何完成的,以及你如何处理这个问题。

我认为自定义路由加载器就是答案。

自定义路由加载程序允许您将路由添加到应用程序,而无需将它们包含在 Yaml 文件中。当您有一个捆绑包但不想手动将捆绑包的路由添加到 app/config/routing.yml 时,这会派上用场。当您想要使捆绑包可重用时,或者当您开源它时,这可能尤其重要,因为这会减慢安装过程并使其容易出错。 或者,当您希望根据某些约定或模式自动生成或定位路由时,也可以使用自定义路由加载程序。

No.对于每个捆绑包,必须在 routing.yml 中导入路由。每个流行的捆绑包(如FOSUserBundle)也必须这样做。

因此,任何捆绑包都无法覆盖用户路由。在 routing.yml 中导入路由提供了在此导入的路由上定义前缀或主机选项的选项。