2016-04-07 155 views
0

你能幫助我嗎?我如何在預初始化框架中的會話中設置默認變量,而不是在某些控制器中?謝謝Symfony默認會話變量

+0

您是否意味着你的第一個控制器之前聲明會話變量? –

回答

1

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