Comment puis-je définir dynamiquement un paramètre dans Symfony2?

Je suis en train de définir de façon dynamique un paramètre dans Symfony2 (que je ne peut pas de manière statique en parameters.yml fichier). Mon approche est d'utiliser un EventListener:

namespace Acme\AcmeBundle\EventListener;

use Symfony\Component\DependencyInjection\Container;

class AcmeListener
{
    private $container;

    public function __construct(Container $container)
    {
        $this->container = $container;
    }

    public function onKernelRequest()
    {
        //Dynamically fetch $bar
        $bar = fetch('foobar');

        //Set parameter
        $this->container->setParameter('foo', $bar);
    }
}

Et ma définition de service dans config.yml ressemble à ceci:

service:
    kernel.listener.acme_listener:
        class: Acme\AcmeBundle\EventListener\AcmeListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
        arguments: [ '@service_container' ]

Le problème est que j'obtiens une exception:

LogicException: Impossible d'appeler set() sur une gelée de ParameterBag.

Comment puis-je contourner cette exception ou voyez-vous une autre façon de définir dynamiquement un paramètre?

OriginalL'auteur Gottlieb Notschnabel | 2014-04-18