Как вы получаете доступ к сеансу пользователей из службы в Symfony2?

Кто-нибудь знает, как получить доступ к переменной сеанса в службе?

У меня есть служба, с которой я передаю контейнер. Я могу получить доступ к таким вещам, как служба Doctrine, используя:

// Get the doctrine service $doctrine_service = $this->container->get('doctrine'); // Get the entity manager $em = $doctrine_service->getEntityManager(); 

Однако я не уверен, как получить доступ к сеансу.

В контроллере сеанс можно получить, используя:

 $session = $this->getRequest()->getSession(); $session->set('foo', 'bar'); $foo = $session->get('foo'); 

Является ли сессия частью службы, и если да, то что называется службой.

Любая помощь могла бы быть полезна.

Solutions Collecting From Web of "Как вы получаете доступ к сеансу пользователей из службы в Symfony2?"

php app/console container:debug показывает, что служба session является экземпляром класса Symfony\Component\HttpFoundation\Session , поэтому вы можете получить сеанс с таким именем:

 $session = $this->container->get('session'); 

После того, как вы выполнили свою работу в сеансе, вызовите $session->save(); чтобы написать все на сеанс. Кстати, есть еще две службы, связанные с сеансом, которые также отображаются в моем контейнере:

session.storage instanceof Symfony\Component\HttpFoundation\SessionStorage\NativeSessionStorage

session_listener instanceof Symfony\Bundle\FrameworkBundle\EventListener\SessionListener

Если вы не хотите проходить во всем контейнере, вы просто передаете @session в аргументах:

services.yml

 my.service: class: MyApp\Service arguments: ['@session'] 

Service.php

 use Symfony\Component\HttpFoundation\Session\Session; class Service { private $session; public function __construct(Session $session) { $this->session = $session; } public function someService() { $sessionVar = $this->session->get('session_var'); } } 

Попробуйте это решение:

 use Symfony\Component\HttpFoundation\Session\Session; $session = new Session(); $session->get('variable'); 

faz assim que vai funcionar

 use Symfony\Component\HttpFoundation\Session\Session; class ClassType extends AbstractType { private $session; /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $this->session = new Session(); ->add('field', $this->session->get('nameFieldSession')); } }