【问题标题】:Symfony 1.4: Unable to set session variablesSymfony 1.4:无法设置会话变量
【发布时间】:2012-12-30 23:43:36
【问题描述】:

我正在尝试设置一个可以跨所有操作/模板访问的 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 进行登录身份验证,尽管我认为设置会话变量与此无关。

【问题讨论】:

  • 拨打$this->getUser()->getAttribute('userid')时用户是否登录?

标签: php session symfony-1.4 session-variables


【解决方案1】:

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

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

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

类似的东西:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-13
    • 2021-04-09
    • 1970-01-01
    • 2018-01-07
    • 2017-07-21
    • 2014-04-03
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多