【问题标题】:Symfony 2 - "Internal" bundle routingSymfony 2 - “内部”捆绑路由
【发布时间】:2013-09-10 14:59:38
【问题描述】:

有什么方法可以从 bundle 本身注册 bundle 的路由,而不是在主路由文件中导入它? 现在我的routing.yml 看起来像这样:

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

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

【问题讨论】:

    标签: php symfony routing


    【解决方案1】:

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

    我认为你应该深入了解Kernel::buildContainer 以了解它是如何完成的以及如何处理它。

    【讨论】:

      【解决方案2】:

      我认为custom route loader 是答案。

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

      【讨论】:

      • 来自自定义路由加载器的路由也必须是mentioned in routing.yml
      • 你是对的,但捆绑包负责启用和禁用路由 - 这解决了问题。 :)
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-11-09
        • 1970-01-01
        • 2016-02-09
        • 1970-01-01
        • 2013-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多