2014-09-05 2 views
9

Как создать и получить доступ к переменным сеанса Symfony 2 в моих контроллерах. Я использовал вот так.Как установить переменные сеанса для всех контроллеров в Symfony2?

$session = new Session(); 
$session->start(); 
$session->set('loginUserId',$user['user_id']); 

Я хочу знать, как использовать приведенную выше переменную сеанса во всех моих контроллерах для доступа.

ответ

19

Один из способов использования сессий в Symfony в контроллере:

установка:

$this->get('session')->set('loginUserId', $user['user_id']); 

получать:

$this->get('session')->get('loginUserId'); 

Если вы используете стандартные п ramework издания

+0

благодаря Габриэль ... –

+0

Если мой ответ был полезным может пометить его как ответ на вашу проблему? –

+0

применим ли этот метод для использования этой переменной сеанса во всем моем контроллере? –

2

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

use Symfony\Component\HttpFoundation\Session\Session; 

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

    // set and get session attributes 
    $session->set('name', 'Drak'); 
    $session->get('name'); 

    // set flash messages 
    $session->getFlashBag()->add('notice', 'Profile updated'); 

    // retrieve messages 
    foreach ($session->getFlashBag()->get('notice', array()) as $message) { 
    echo '<div class="flash-notice">'.$message.'</div>'; 
    } 
+0

благодаря Чарльз .... –

9

Из документов:

Symfony сессии предназначены для замены несколько родных функций PHP. Приложения должны избегать использования session_start(), session_regenerate_id(), session_id(), session_name() и session_destroy() и вместо этого использовать API в следующем разделе.

и:

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

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

public function indexAction(Request $request) 
{ 
    $session = $request->getSession(); 
    ... 
} 

или:

public function indexAction() 
{ 
    $session = $this->getRequest()->getSession(); 
    // or 
    $session = $this->get('session'); 
    ... 
} 

чем:

// store an attribute for reuse during a later user request 
$session->set('foo', 'bar'); 

// get the attribute set by another controller in another request 
$foobar = $session->get('foobar'); 

// use a default value if the attribute doesn't exist 
$filters = $session->get('filters', array()); 
Смежные вопросы