我开始这篇文章是为了了解如何从用户会话(Symfony 1.4)中获取/设置值。Get 可以完美运行,但 Set 永远无法正常工作。我可以在调试模式中看到全局会话($_SESSION)已更新,但用户会话没有。我尝试了这种方式,这种方式,另一种方式,至少这个......没有成功。我从未从 Symfony 1.4 中读到过这样的错误。我使用浏览器(linux)Firefox和Chrome(我也将它测试到匿名标签中)。
调试方式用户看起来像:
attributeHolder:
myNS: {
aValue: '15',
ns_15: {
Tel: '78568951',
myID: '15',
anotherID: '120',
anArray: [{
arrayID: '78',
Company: 'myComp'
}] },
ns_17: { ... }
}
我可以更改aValue属性,删除并重新插入它。但是ns_15或ns_17可以删除或更改,但此更改不能影响(symfony 调试模式)用户,但只需进入$_SESSION(symfony 调试模式全局)我可以看到更新的值。
是否有另一种方法可以使用 symfony 1.4 设置/更改/删除或将值写入用户会话,或者它是 Symfony 错误?
编辑1
直到我看到这个错误和这个博客,我才弄清楚!好吧,我正在使用 AJAX 来调用控制器。所以这可能是我不能在 Session 上写的原因。另一种我不能真正继承 sfWebResponse 的方式是因为我的操作已经是 sfActions 的子类。:(
编辑2
因为Edit1我试图做到这一点:
$sessionData = $this->getUser()->getAttribute("ns_15", array(), "myNS");//all good
$sessionData["Tel"] = "0111111110";
var_dump($sessionData["Tel"]);//show me 0111111110
$this->getUser()->setAttribute("ns_15", $sessionData, "myNS");
$this->getUser()->shutdown();
sfContext::getInstance()->getStorage()->shutdown();
解决了两次重新加载的行为,但仍然无法写入 $_SESSION 和 USER SESSION。(同样的麻烦)。