【发布时间】:2014-10-20 16:21:58
【问题描述】:
我正在查看这篇帖子 How do you access a users session from a service in Symfony2? 来管理 Symfony 中的会话。一旦用户输入特定信息并在另一个控制器甚至在树枝模板中获取会话变量,我想设置一个会话变量,所以...
我的控制器中有这个:
use Symfony\Component\HttpFoundation\Session;
class MyFirstController
{
public function myFunction(Request $request)
{
$session = $this->container->get('session');
$session->set('user', array(
'name' => 'My Name',
'email' => 'fake@email.com'
));
$session->save();
var_dump($session->get('user')); //Print null
}
}
另一个控制器:
use Symfony\Component\HttpFoundation\Session;
class MySecondController
{
public function myFunction()
{
$session = $this->container->get('session');
var_dump($session->get('user')); //Print null
}
}
即使在$session->save(); 之后尝试访问会话变量也会返回 null
希望你能帮助我。
编辑
使用$session = $request->getSession(); 或$session = $this->container->get('session'); 会在两者上返回相同的会话实例。
config.yml
session:
handler_id: session.handler.native_file
save_path: "%kernel.root_dir%/sessions"
另一件事是,如果我不使用 $session->save();并在设置会话后执行 $session->get('user');它返回用户的值,但如果我重新加载页面并重试,现在会话为空。
【问题讨论】:
-
所以让我直截了当地说,您在会话中设置了
user字段,并获得了agent字段,您想知道为什么它返回null? -
对不起,我的错误..我修复了错误...这是用户而不是代理。
-
您是否有任何与错误日志中记录的会话相关的错误?
-
仅供参考,您在设置
user数组时遇到语法错误。您缺少右括号,但我怀疑这只是一个错字。 -
你看到你的日志了吗?有错误吗?