在 Symfony2 的 config.yml 中,您可以添加“导入”,例如:
imports:
- { resource: services.yml }
在我的 services.yml 中,我有:
imports:
security_bundle:
resource: @AcmeSecurityBundle/Resources/config/services.yml
然而,为捆绑声明服务的另一种方法是使用 a ,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
?