【发布时间】:2014-11-26 10:26:11
【问题描述】:
我确信这个问题只是由于错过了配置参数,并且对此有一个简单的答案,但这让我发疯了。在我们的开发机器上一切正常,但在我们的测试服务器上,我们遇到了以下问题......
我们有一个 Symfony2(2.5.7 版)应用程序。控制器设置会话变量来保存实体的 ID。然后应用程序触发 Ajax 请求,接收请求的控制器使用会话变量来决定发送回什么。
在主控制器中,我们有(在检查 $page 是一个有效实体之后)
$this->get('session')->set('pageId', $page->getId());
然后在处理 ajax 的控制器中,我们有
$pageId = $this->get('session')->get('pageId');
在加载主控制器时,我可以看到会话 cookie 已设置,并且它具有“pageId”的预期值。我可以看到会话的详细信息存储在服务器上的 app/session 目录中,因此我非常确定会话设置正确。此文件夹的权限是正确的,因此允许 apache 对其进行读写。但是,Ajax 控制器报告 $pageId 为假。如果我得到会话的 ID;
$session = $this->get('session');
$session->start();
$sessionId = $session->getId();
我可以看到会话的 ID 与 Ajax 请求发送的 cookie 中的值相匹配,并且与 app/session 目录中名为“sess_{sessionId}”的文件相匹配。
我错过了什么?
【问题讨论】:
-
你试过
$this->getRequest()->getSession();吗? -
抱歉,从 Symfony 2.4 开始,
getRequest()已被弃用。将其用作控制器方法的参数:public function myAction(Request $request)
标签: symfony