2012-08-24 23 views
6

Me preguntaba si existe la posibilidad de modificar una configuración de paquetes de otro paquete. Digamos, por ejemplo, estoy usando el FOSUserBundle con la siguiente configuración:Modificar la configuración del paquete desde otro paquete

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Acme\UserBundle\Entity\User 

Y ahora, quiero cambiar la clase de usuario al cargar una extensión específica (la AcmeFoobarExtension). ¿Es posible cambiar la configuración al cargar el AcmeFoobarExtension? Por ejemplo:

<?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' 
     ); 
    } 
} 

¿Es posible algo así? ¿O lo derrota con el propósito de la inyección de dependencia?

EDITAR: Aparentemente hay un pull request para Symfony 2.2 que aborda esta idea/problema.

EDIT 2: ahora está disponible en Symfony 2.2 (con un article in the cookbook).

+0

Si tiene una respuesta, puede publicar una respuesta a su propia pregunta para esclarecer a los demás. – neontapir

Respuesta

1

Después de hacer la misma pregunta en la lista de correo de usuarios de Symfony (here's the question), descubrí que hay una pull request abierta para esta idea.

Es para la versión 2.2 y aún no se ha fusionado en master, pero la última actividad es de hace 3 días, así que ¡esperemos lo mejor!

6

Cabe señalar que este es ahora una característica oficial de Symfony:

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

Un haz puede anteponer los valores de configuración de los parámetros globales de configuración. Para hacer eso, la extensión del paquete debe implementar PrependExtensionInterface. El método prepend() puede agregar valores de configuración global.

Tenga en cuenta, sin embargo, que los valores pueden ser sobrescritos por otros paquetes y en el propio archivo de configuración.

Cuestiones relacionadas