Symfony 1.4:无法设置会话变量

时间:2012-12-30 23:43:36

标签: php session symfony-1.4 session-variables

我正在尝试设置一个symfony会话变量,我可以访问所有动作/模板。一旦验证了用户凭证,用户进行了身份验证,但在将其重定向到其主页之前,即可完成此操作。

代码如下所示:

// 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进行登录验证,虽然我不认为设置会话变量与它有任何关系。

1 个答案:

答案 0 :(得分:2)

不确定错误是什么,但这里有一些改进代码并尝试调试的建议:

1 - 在您的用户类中添加自定义函数,这样您就可以调用$ this-> getUser() - > setMyVariable(4),$ this-> getUser() - > getMyVariable(), $这个 - >的getUser() - > isMyVariableDefined()... 这样可以避免名称和命名空间上的任何拼写错误......

2 - 添加命名空间以防万一(以避免与通用名称(如userid)发生冲突)...

类似的东西:

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

3 - 用户登录后,使用调试栏检查用户属性 - 无需对其进行编码。如果它在那里,继续检查以确定它何时消失......