你能帮我吗?我如何在预初始化框架的会话中设置默认变量,而不是在某些控制器中?感谢
Symfony具有可以附加自己的event listener
的事件。您可以附加事件侦听器的是kernel.request
。以下是您可以使用的源代码示例。
首先,在Resources/config
文件夹下的services.yml
文件中:
services:
listener.my_request_listener:
class: My'AwesomeBundle'Listener'MyListener
arguments: [ @session ]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
第二,你的MyListener
看起来是这样的:
namespace My'AwesomeBundle'Listener;
use Symfony'Component'HttpKernel'Event'GetResponseEvent;
use Symfony'Component'HttpKernel'Event'FilterResponseEvent;
use Symfony'Component'HttpFoundation'Cookie;
use Symfony'Component'HttpFoundation'Session;
class MyListener
{
protected $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
public function onKernelRequest(GetResponseEvent $event)
{
$kernel = $event->getKernel();
$request = $event->getRequest();
//Your logic goes here
if($this->session->has('someKey')){
$this->session->set('someKey','newvalue');
}
}
}