2014-11-03 10 views
5

Nell'ultima versione di Symfony 2 (utilizzando FOSUserBundle e SonataUserBundle), sto cercando di ottenere l'utente corrente per pre-compilare un modulo nella mia nuova Entità controller.getUser() restituisce null, la sessione non è stata avviata nel mio controller symfony

Su mycontroller.yml:

my_controller_new: 
    pattern: /new 
    defaults: { _controller: "MySiteBundle:MyController:new" } 

Su MyController.php:

public function newAction() 
{ 
    $user = $this->getUser(); 
    // ... 
} 

Ma quando chiamo $this->getUser(), il metodo restituisce null. Anche se sono entrato (posso accedere /profile e aggiornare il mio informazioni utente senza alcun problema)

Allora ho provato a controllare è stata avviata la sessione:

public function newAction() 
{ 
    var_dump($this->get('session')->isStarted()); 
    // ... 
} 

restituisce False. Cosa c'è di sbagliato qui?

+0

$ this-> get ('session') -> isStarted() return false significa la sessione non iniziata. –

+1

Sì, lo cito nel titolo, ma mi chiedo perché. – SylvainB

+0

, ho inviato risposta per favore controlla se aiuta a risolvere il tuo problema! –

risposta

0
public function newAction() { 

     $session = $this->getRequest()->getSession(); // Get started session 
     if(!$session instanceof Session) 
      $session = new Session(); // if there is no session, start it 

     $value = $session->getId(); // get session id 
    } 
+0

Nessun errore con quel codice, ma getId() restituisce una stringa vuota. – SylvainB

+0

@ BraveKenny, dove salvi la sessione utente? Penso che potrebbe non essere memorizzare i dati utente in sessione, ecco perché non si ottengono i dati della sessione utente. –

Problemi correlati