2012-12-30 96 views
1

我想設置一個symfony會話變量,我可以通過我的所有操作/模板訪問該變量。一旦用戶證書被驗證,用戶通過驗證,但在他被重定向到他的主頁之前,這就完成了。Symfony 1.4:無法設置會話變量

的代碼看起來是這樣的:

// Authentication verified 

$this->getUser()->setAuthenticated(true); 
// note I am deliberately using a static value 
$this->getUser()->setAttribute('userid',"4"); 
$this->redirect('flashcard/index'); 

當我試圖以我的行動之一,得到這個屬性,像這樣:

$this->getUser()->getAttribute('userid')返回null,

我採取var_dump像這樣:

var_dump($this->getUser()->getAttributeHolder()->getAll()); 

它和它返回一個空數組,這意味着有些東西不太正確。

作爲提醒,我沒有使用sfDoctrineGuard進行登錄身份驗證,儘管我不認爲設置會話變量會與它有任何關係。

+0

當您調用'$ this-> getUser() - > getAttribute('userid')'時,用戶是否已登錄? – 1ed

回答

2

不知道是什麼錯誤,但這裏有一些建議,以改善你的代碼,並試圖對其進行調試:

1 - 對於添加自定義功能,在您的用戶類,所以你調用$這個 - > getUser() - > setMyVariable(4),$ this-> getUser() - > getMyVariable(),$ this-> getUser() - > isMyVariableDefined()... 這將避免名稱和命名空間上的任何錯字...

2 - 添加一個命名空間,以防萬一(以避免對通用名稱,如用戶ID衝突)...

類似的東西:

public function setMyVariable($value = null) 
{ 
    $this->setAttribute('user_id', $value, 'some_namespace'); 
} 

3 - 一旦用戶登錄,使用調試欄檢查用戶屬性 - 無需對其進行編碼。如果它在那裏,請繼續檢查以瞭解它何時消失...