2014-11-03 34 views
5

在最新的Symfony 2版本中(使用FOSUserBundle和SonataUserBundle),我試圖獲取當前用戶以便在我的新實體中預填表單控制器。getUser()返回null,我的symfony控制器中沒有啓動會話

mycontroller.yml

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

MyController.php

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

但是當我打電話$this->getUser(),該方法返回null。即使我在我登錄(我可以訪問/profile和更新,沒有任何問題我的用戶信息)

我又試圖檢查在會話開始:

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

返回FALSE。這裏有什麼問題?

+0

$ this-> get('session') - > isStarted()返回false表示您的會話未啓動。 – 2014-11-03 10:50:37

+1

是的,我在標題中提到它,但我想知道爲什麼。 – SylvainB 2014-11-03 10:52:41

+0

,我發佈了答案,請檢查它是否有助於解決您的問題! – 2014-11-03 10:57:17

回答

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

該代碼沒有錯誤,但getId()返回一個空字符串。 – SylvainB 2014-11-03 11:01:45

+0

@ BraveKenny,你在哪裏保存你的用戶會話?我認爲它可能不會將用戶數據存儲到會話中,這就是爲什麼您不能獲取用戶會話數據。 – 2014-11-03 11:12:00

相關問題