【问题标题】:How do I automatically include routing and config.yml for bundles in /vendors如何在 /vendors 中自动包含捆绑包的路由和 config.yml
【发布时间】:2019-09-28 03:03:10
【问题描述】:

我最近开始将我们的自定义包从 Symfony2 应用程序中分离出来,以便可以在多个项目之间共享它们。我已经成功地将它们放入自己的存储库中,并通过 Composer 重新包含在主应用程序中。我知道我必须在 AppKernal 中注册它们,但我希望不必从 /app/config/*.yml 中的文件直接链接到它们的 routing.yml 和 config.yml 文件。

有没有办法自动将捆绑包中的配置文件包含在供应商文件夹中?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    原来一位同事之前用 config.yml 做过这件事,并把我指向了这个文档

    http://symfony.com/doc/current/cookbook/bundles/extension.html#using-the-load-method

    通过将以下内容添加到包扩展中的 load() 函数中,您可以让它自动加载各种配置文件

    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('config.yml');
    $loader->load('services.yml');
    

    但这不适用于 routing.yml,因为它认为它必须加载与每个路由名称匹配的扩展。

    【讨论】:

    • 你需要使用自定义加载器来加载路由,你可以在这里找到一个例子:symfony.com/doc/current/cookbook/routing/…
    • 文档说“从一些自定义源加载路由(即从注释、YAML 或 XML 文件以外的东西)”,但我的路由采用标准 yaml 格式,并且在从其他路由包含时工作。 yml 文件。我认为我不需要自定义加载器,我只需要触发标准加载器即可。
    【解决方案2】:

    请看我的回答 - https://stackoverflow.com/a/58140085/1274890

    同样根据https://symfony.com/doc/current/bundles/override.html#routing

    Symfony 中永远不会自动导入路由。如果你 想要包含任何捆绑包中的路由,那么它们必须手动 从应用程序中的某个位置导入(例如 config/routes.yaml)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 2016-01-26
      相关资源
      最近更新 更多