Próbuję dynamicznie ustawić parametr w Symfony2 (którego nie mogę ustawić statycznie w moim pliku parameters.yml
). Moje podejście jest użyć EventListener
:Jak mogę dynamicznie ustawić parametr w Symfony2?
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);
}
}
A moja definicja usługi w config.yml
wygląda następująco:
service:
kernel.listener.acme_listener:
class: Acme\AcmeBundle\EventListener\AcmeListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
arguments: [ '@service_container' ]
Problem jest, otrzymuję wyjątek:
LogicException: Impossible wywołanie metody set() dla zamrożonej ParameterBag.
Jak mogę obejść ten wyjątek lub czy widzisz inny sposób dynamicznego ustawiania parametru?