2

我正在尝试设置一个可以跨所有操作/模板访问的 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')它返回空值,

我采取var_dump这样的:

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

它返回一个空数组,这意味着有些事情不太正确。

提醒一下,我没有使用 sfDoctrineGuard 进行登录身份验证,尽管我认为设置会话变量与它没有任何关系。

4

1 回答 1

2

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

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

2 - 添加命名空间以防万一(避免通用名称冲突,例如用户 ID)...

像这样的东西:

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

3 - 用户登录后,使用调试栏检查用户属性 - 无需编写代码。如果它在那里,请继续检查以找出它何时消失...

于 2013-01-01T03:55:09.300 回答