2014-11-03 6 views
5

In der letzten Symfony 2-Version (mit FOSUserBundle und SonataUserBundle) versuche ich den aktuellen Benutzer zu erhalten, um ein Formular in meiner neuen Entität vorzufüllen Regler.getUser() gibt null zurück, Sitzung wurde nicht in meinem Symfony-Controller gestartet

Auf mycontroller.yml:

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

Auf MyController.php:

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

Aber wenn ich $this->getUser() nennen, gibt die Methode null. Auch wenn ich angemeldet bin (ich kann /profile zugreifen und meine Benutzer Informationen ohne Probleme aktualisieren)

Ich habe dann versucht zu prüfen, wird die Sitzung gestartet wurde:

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

Es gibt false zurück. Was ist hier falsch?

+0

$ this-> get ('sitzung') -> isStarted() return false bedeutet, dass Ihre Sitzung nicht gestartet wurde. –

+1

Ja, ich erwähne es im Titel, aber ich frage mich warum. – SylvainB

+0

, ich habe eine Antwort geschrieben, bitte überprüfen Sie, ob es hilft, Ihr Problem zu lösen! –

Antwort

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

Keine Fehler mit diesem Code, aber getId() gibt eine leere Zeichenfolge zurück. – SylvainB

+0

@ BraveKenny, wo speichern Sie Ihre Benutzersitzung? Ich denke, es ist nicht möglich, Benutzerdaten in einer Sitzung zu speichern. Deshalb erhalten Sie die Benutzersitzungsdaten nicht. –