【问题标题】:Symfony2 bundle based application config merged into global config基于 Symfony2 捆绑包的应用程序配置合并到全局配置中
【发布时间】:2015-07-10 18:53:06
【问题描述】:

我目前正在构建一个相当大的 Symfony 2 应用程序,其中包含越来越多的捆绑包,我一直在努力计算。

我尝试保留系统每个模块的所有捆绑包,这为我提供了一个易于管理的结构。不太好的是我的app/config/config.yml,它很快就失去了控制。了解可以在此文件中完成导入,这对我有所帮助,但我想移动特定于每个捆绑包的整个配置范围,这将有助于使这些捆绑包在我们的其他应用程序中可重用。

这里有一些我想移动到单个捆绑包的示例。

1) 依赖注入

我们在所有内部包中使用JMSDiExtraBundle,因为我们发现它可以让开发变得更快,更易于管理。

# Annotations/Config
jms_di_extra:
  locations:
    bundles:
      - AppBundle
      - BlogBundle
      - ContentBundle
      - StoreBundle
      - UserBundle

我希望将此块移动到每个单独的捆绑包config.yml 或更好,但这将在每个捆绑包DependencyInjection/AppBundleExtension.php 中启用。

2) 路由

用于路由配置,但每个捆绑包仍然需要包含在 app/config/routing.yml 中,这给我们留下了一个相当大的无法管理的文件。

一些例子

app:
  resource: "@AppBundle/Controller"
  type:     annotation

blog:
  resource: "@BlogBundle/Controller"
  type:     annotation

content:
  resource: "@ContentBundle/Controller"
  type:     annotation

oneup_uploader:
  resource: .
  type:     uploader

3) OneUp 上传器

这是我最大的痛点,这个配置目前在我们使用的 20 多个包之间超过 500 行。以下是从app/config/uploader.yml 提取的一些示例,这些示例是从config.yml 导入的。如果我能以某种方式将这些放入每个捆绑包配置中,我会非常高兴!

# Uploader
oneup_uploader:
  mappings:
    bundle_name_reference1:
      frontend: blueimp
      storage:
        type: gaufrette
        filesystem: gaufrette.local_filesystem
    bundle_name_reference2:
      frontend: blueimp
      storage:
        type: gaufrette
        filesystem: gaufrette.local_filesystem

我的想法是通过将所有这些配置放入每个单独的包中,我可以通过更新 AppKernel.php 轻松启用/禁用它们。我假设所有这些都是可能的,因为 Symfony 非常灵活,当涉及到这些较低级别的更改时,我只是有点迷茫。

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    你可以简单地添加

    oneup_uploader:
        #...
    

    src/Vendor/WhateverBundle/Resources/config/services.yml

    有一个关于如何从 app/config 中解耦捆绑包的食谱条目: How to Load Service Configuration inside a Bundle

    我认为理想的低耦合解决方案是创建一个扩展另一个包(例如 MyOneUploaderBundle)的包,并在那里使用说明书方法。

    【讨论】:

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