2013-06-01 5 views
9

Я создал переменную сеанса в одном контроллере, и я хочу получить к ней доступ в другом контроллере. В loginsuccess контроллере я установил сеанс:Как получить доступ к переменной сеанса в контроллере

$session->set('id',$id); 

Как я могу получить доступ к этой переменной в другой контроллер?

ответ

17

Существует session сервис, который вы должны использовать:

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

или

$this->get('session')->set('id', $id); 
+1

Я согласен, что это лучший способ пойти. –

1

Хотя Киприан ответ действительно, вы найдете в документации следующее использование:

use Symfony\Component\HttpFoundation\Session\Session; 

$session = new Session(); 
$session->start(); 

// set and get session attributes 
$session->set('id',$id); 
$session->get('id'); //this is the line you are looking for 

http://symfony.com/doc/master/components/http_foundation/sessions.html

Примечание:

Хотя рекомендуется явно начать сеанс, а сеансы будут фактически начинают по требованию, то есть, если запрос сеанса производится на данные сеанса/записи чтения.

+0

Хорошая точка. Но обратите внимание, что это компонентная документация. На самом деле в соответствии с документами framework есть третий способ играть с сеансовой службой: http://symfony.com/doc/current/book/controller.html#managing-the-session :) – Cyprian

+4

, но, возможно, стоит добавить , объект сеанса, возвращенный из объекта Request, точно такой же, как и объект из контейнера службы – Cyprian

+1

Поскольку вопрос о доступе к форме сеанса контроллера, ваш ответ имеет больше смысла. Но, как вы сказали, возможно, стоит упомянуть, что в этом контексте также справедливо выражение '$ this-> getRequest() -> getSession()'! – cheesemacfly

5

На более общем плане, если ваш контроллер простирается от основания Symfony контроллер (Symfony\Bundle\FrameworkBundle\Controller\Controller) вы можете получить сеанс 3 способами:

  1. $session = $this->container->get('session');
  2. $session = $this->get('session'); (который в основном это ярлык 1)
  3. $session = $request->getSession();
Смежные вопросы