【发布时间】:2012-02-14 23:16:55
【问题描述】:
在 Symfony2 的 config.yml 中你可以添加一个“import”,例如:
imports:
- { resource: services.yml }
在我的 services.yml 里面我有:
imports:
security_bundle:
resource: @AcmeSecurityBundle/Resources/config/services.yml
然而,为捆绑声明服务的另一种方法是使用 DependencyInjection Extension 从而消除手动将任何内容导入 config.yml 的需要,从而解耦代码。
namespace Acme\Bundle\SecurityBundle\DependencyInjection;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\Config\FileLocator;
class AcmeSecurityExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$loader = new YamlFileLoader(
$container, new FileLocator(__DIR__ . '/../Resources/config')
);
$loader->load('services.yml');
}
}
问题
这适用于服务声明,但例如您希望一个包配置另一个包,例如添加LiipImagineBundle(就像AvalancheImagineBundle)过滤器:
liip_imagine:
filter_sets:
security_avatar_thumbnail:
quality: 75
filters:
thumbnail: { size: [140, 140], mode: inset }
Symfony 然后抱怨
没有扩展能够加载“liip_imagine”的配置
那么有谁知道是否有一种方法可以在不触及 config.yml 的情况下从另一个捆绑包中为第三方捆绑包添加配置?
【问题讨论】: