【发布时间】: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 非常灵活,当涉及到这些较低级别的更改时,我只是有点迷茫。
【问题讨论】: