Как я могу динамически установить параметр в Symfony2?
Я пытаюсь динамически установить параметр в Symfony2 (который я не могу установить статически в моемparameters.yml
файл). Мой подход заключается в использовании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);
}
}
И мое определение сервиса вconfig.yml
выглядит так:
service:
kernel.listener.acme_listener:
class: Acme\AcmeBundle\EventListener\AcmeListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
arguments: [ '@service_container' ]
Проблема в том, что я получаю исключение:
LogicException: невозможно вызвать set () для замороженного ParameterBag.
Как можно обойти это исключение или вы видите другой способ динамической установки параметра?