8

我想知道是否有可能从另一个包修改包配置。比方说,例如,我正在使用具有以下配置的 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 的拉取请求,它解决了这个想法/问题。

编辑 2:这现在在 Symfony 2.2 中可用(在食谱中有一篇文章)。

4

2 回答 2

10

需要注意的是,这现在是 Symfony 的官方功能:

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

捆绑包可以将配置值添加到全局配置参数中。为此,捆绑扩展必须实现PrependExtensionInterface. 然后该prepend()方法可以添加全局配置值。

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

于 2015-05-13T14:00:38.920 回答
2

在 Symfony 用户邮件列表(这里是问题)上问了同样的问题后,我发现这个想法有一个开放的拉取请求

这是2.2版本,还没有合并到master,但是最后一个活动是3天前的,所以让我们期待吧!

于 2012-10-16T13:52:27.243 回答