我正在检查此帖子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');它返回用户的值,但如果我重新加载页面并再试一次,现在会话为空。
答案 0 :(得分:1)
您需要将会话存储在可写入目录下。
答案 1 :(得分:1)
我使用标准路径来解决我的问题来存储会话 var / lib / php / session
framework:
session:
save_path: ~
这就是全部,现在即使在树枝模板中,我也可以在另一个控制器中使用该会话。
感谢大家的帮助!
答案 2 :(得分:0)
控制器操作中的会话可以通过以下两种方式获得:
$this->getRequest()->getSession()
$request->getSession()