Wie kann ich dynamisch die Einstellung eines Parameters in Symfony2?

Ich versuche, die dynamisch die Einstellung eines Parameters in Symfony2 (das kann ich nicht statisch festgelegt, in meinem parameters.yml - Datei). Mein Ansatz ist die Verwendung einer 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);
    }
}

Und meine service-definition in config.yml sieht wie folgt aus:

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

Das problem ist, ich bekomme eine exception:

LogicException: Unmöglich, den Aufruf von set() auf einem gefrorenen ParameterBag.

Wie kann ich arbeiten, um dieses Ausnahme-oder siehst du eine andere Möglichkeit dynamisch einen parameter?

Schreibe einen Kommentar