我想知道是否可以修改另一个捆绑包中的捆绑配置。比方说,我正在使用具有以下配置的FOSUserBundle:
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\UserBundle\Entity\User
现在,我想在加载特定扩展名(AcmeFoobarExtension
)时更改用户类。是否可以在加载时更改配置
AcmeFoobarExtension
?例如:
<?php
namespace Acme\FoobarBundle\DependencyInjection;
// use statements for dependency injection
class FoobarExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$container->setConfiguration(
'fos_user.user_class',
'Acme\FoobarBundle\Entity\User'
);
}
}
这样的事情可能吗?或者说它是依赖注入的目的吗?
编辑:显然,Symfony 2.2有一个pull request来解决这个想法/问题。
编辑2:现在可以在Symfony 2.2中找到它(带有article in the cookbook)。
答案 0 :(得分:8)
应该注意的是,这现在是Symfony的官方特色:
http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html
bundle可以将配置值添加到全局配置参数中。为此,捆绑扩展必须实现PrependExtensionInterface
。然后,prepend()
方法可以添加全局配置值。
但请注意,这些值可能会被其他包和配置文件本身覆盖。
答案 1 :(得分:1)
在Symfony用户邮件列表(here's the question)上提出同样的问题之后,我发现这个想法有一个开放的pull request。
它适用于版本2.2但尚未合并为主版,但最后一项活动是从3天前开始的,所以让我们希望最好!