我正在尝试设置一个 symfony session 变量,我可以在所有操作/模板中访问该变量。一旦用户凭据得到验证,用户经过身份验证,但在他被重定向到其主页之前,就会完成此操作。
代码如下所示:
// 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 进行登录身份验证,尽管我不认为设置 session 变量与之有任何关系。
最佳答案
不确定错误是什么,但这里有一些改进代码并尝试调试它的建议:
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 - 用户登录后,使用调试栏检查用户属性 - 无需编码。如果它存在,请继续检查以查明它何时消失...
关于php - 交响乐 1.4 : Unable to set session variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14095861/