Symfony默认会话变量


Symfony default session variabe

你能帮我吗?我如何在预初始化框架的会话中设置默认变量,而不是在某些控制器中?感谢

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');
        }
    }
}