2013-06-01 12 views

Odpowiedz

17

Jest session serwis, który powinien użyć:

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

lub

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

Zgadzam się, że to lepszy sposób, aby przejść. –

1

Chociaż odpowiedź Cyprian jest ważna, znajdziesz w dokumentacji następujące Zastosowanie:

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

Uwaga:

Choć zaleca się wyraźnie rozpocząć sesję, a sesje zacząć na żądanie, to znaczy, jeśli każdy wniosek sesja się do danych sesji/zapisu odczytu.

+0

Dobra uwaga. Ale zwróć uwagę, że jest to dokumentacja komponentu. W rzeczywistości, zgodnie z dokumentami ramowymi, istnieje trzecia metoda grania za pomocą usługi sesji: http://symfony.com/doc/current/book/controller.html#managing-the-session :) – Cyprian

+4

, ale może warto dodać , obiekt sesji zwrócony z obiektu Request jest dokładnie taki sam jak obiekt z kontenera usługi – Cyprian

+1

Ponieważ pytanie dotyczy dostępu do sesji z poziomu kontrolera, twoja odpowiedź ma więcej sensu. Ale jak powiedziałeś, prawdopodobnie warto wspomnieć, że '$ this-> getRequest() -> getSession()' jest również ważny w tym kontekście! – cheesemacfly

5

Na bardziej ogólnym uwaga, jeśli kontroler rozciąga się od podstawy Symfony kontroler (Symfony\Bundle\FrameworkBundle\Controller\Controller) można uzyskać sesję na 3 sposoby:

  1. $session = $this->container->get('session');
  2. $session = $this->get('session'); (która w zasadzie jest skrót do 1)
  3. $session = $request->getSession();
Powiązane problemy