2016-04-07 2 views
0

Не могли бы вы мне помочь. Как я могу установить varibles по умолчанию в сеансе в рамках предварительной инициализации, а не в каком-то контроллере? thanksSymfony default session variabe

+0

ли вы значит объявить переменную сеанса перед первым контроллером? –

ответ

1

У Symfony событий, которые вы можете добавить в свой собственный event listener. И тот, который вы могли бы прикрепить к слушателю событий, был бы kernel.request. Вот пример исходный код вы можете использовать.

Во-первых, внутри services.yml файла под Resources/config папке:

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'); 
     } 
    } 
} 
Смежные вопросы