Ram*_*iss 8 dependency-injection symfony
我想知道是否可以修改另一个捆绑包中的捆绑配置.比方说,我正在使用具有以下配置的FOSUserBundle:
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\UserBundle\Entity\User
Run Code Online (Sandbox Code Playgroud)
现在,我想在加载特定扩展名时更改用户类(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'
);
}
}
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?或者说它依赖注入的目的?
编辑:显然有一个针对Symfony 2.2 的拉取请求,它解决了这个想法/问题.
应该注意的是,这现在是Symfony的官方功能:
http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html
bundle可以将配置值添加到全局配置参数中.为此,捆绑扩展必须实现PrependExtensionInterface.prepend()然后,该方法可以添加全局配置值.
但请注意,这些值可能会被其他包和配置文件本身覆盖.