2012-08-24 61 views
6

我想知道是否有可能从另一个软件包修改软件包配置。比方说,例如,我使用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' 
     ); 
    } 
} 

是这样的可能吗?或者打败它依赖注入的目的?

编辑:显然有一个pull request为Symfony 2.2解决这个想法/问题。编辑2:现在可以在Symfony 2.2中使用(使用article in the cookbook)。

+0

如果你有答案,你可以发表一个答案给你自己的问题,以启发他人。 – neontapir

回答

1

在Symfony用户邮件列表(here's the question)上提出同样的问题后,我发现这个想法有一个开放的pull request

它是为2.2版本,尚未合并到主,但最后的活动是从3天前,所以让我们希望最好的!

6

应当指出的是,这是现在的Symfony的官方功能:

http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

一束可以在前面加上配置值全局配置参数。为此,捆绑包扩展必须实现PrependExtensionInterface。然后prepend()方法可以添加全局配置值。

但是请注意,这些值可能会被其他软件包和配置文件本身覆盖。

相关问题