2012-08-08 165 views
3
class myController extends Controller 
{ 
    public function newAction($id) 
    { 
     $session = $this->get('session'); 

     if(is_null(($session->get('foo')))){ 
      echo "the variable foo is no set in session"; 
      $session->set('foo', 'bar'); 
     } 
    } 
} 

爲什麼每次動作加載時都會出現echo的msg?會話Symfony2不保留值

+2

可以粘貼'的var_dump($會話級> isStarted())'的結果呢?如果'false',嘗試'$ session-> start()'。如果是'true',請檢查您的瀏覽器設置! – Florent 2012-08-08 16:26:42

+0

我正在使用Symfony 2.0。此方法僅適用於Symfony 2.1。我把$ session-> start()並檢查瀏覽器設置。在config.yml中,會話auto_start爲true。 msg仍然出現。 – Munir 2012-08-09 11:46:49

+0

問題是我有另一個存儲在會話中的對象(實體)。不知道爲什麼它干擾了會話的其他變量。當刪除它一切正常。現在我有另一個問題,商店實體在會話中。但我會搜索更多。無論如何,Thx! – Munir 2012-08-09 12:46:16

回答

1

這個工作對我來說:

class SessionTestController extends Controller 
{ 
    public function testAction() 
    { 
     $session = $this->get('session'); 

     if (is_null($session->get('foo'))) { 
      $session->set('foo', 'bar'); 
      $responseText = 'foo is null'; 
     } else { 
      $responseText = 'foo is set'; 
     } 

     // Use a response object 
     return new Response($responseText); 
    } 
}