I was wondering whether there's a possible to modify a bundles configuration from another bundle. Let's say, for example, I'm using the FOSUserBundle with the following configuration:
fos_user:
db_driver: orm
firewall_name: main
user_class: Acme\UserBundle\Entity\User
And now, I want to change the user class when loading a specific extension (the AcmeFoobarExtension
). Is it possible to change the configuration when loading
the AcmeFoobarExtension
? For example:
<?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'
);
}
}
Is something like this possible? Or defeats it the purpose of dependency injection?
EDIT: Apparently there's a pull request for Symfony 2.2 which addresses this idea/issue.
EDIT 2: This is now available in Symfony 2.2 (with an article in the cookbook).
It should be noted that this is now an official feature of Symfony:
http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html
A bundle can prepend configuration values to the global config parameters. To do that, the bundle extension must implement PrependExtensionInterface
. The prepend()
method can then add global configuration values.
Note, however, that the values may be overwritten by other bundles and in the config file itself.
After asking the same question on the Symfony user mailing list (here's the question), I've found out that there's an open pull request for this idea.
It is for version 2.2 and not yet merged into master, but the last activity is from 3 days ago, so let's hope for the best!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With