我目前正在构建一个相当大的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非常灵活,当涉及到这些较低级别的改动时,我只是有点迷失。
答案 0 :(得分:0)
您只需添加
即可oneup_uploader:
#...
到src/Vendor/WhateverBundle/Resources/config/services.yml
或强>
有一个关于如何从app / config解耦束的菜谱条目: How to Load Service Configuration inside a Bundle
我认为理想的低耦合解决方案是创建一个扩展另一个包的包(例如MyOneUpUploaderBundle)并在那里使用cookbook方法。