【发布时间】:2014-06-03 03:03:54
【问题描述】:
我正在尝试在 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()。
我该如何解决这个异常,或者您是否看到了另一种动态设置参数的方法?
【问题讨论】:
标签: symfony service listener before-filter symfony-http-kernel