我正在尝试在 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:无法在冻结的 ParameterBag 上调用 set()。
我该如何解决此异常,或者您是否看到另一种动态设置参数的方法?