Symfony,session始终返回null

时间:2014-10-20 16:21:58

标签: php symfony session

我正在检查此帖子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');它返回用户的值,但如果我重新加载页面并再试一次,现在会话为空。

3 个答案:

答案 0 :(得分:1)

您需要将会话存储在可写入目录下。

答案 1 :(得分:1)

我使用标准路径来解决我的问题来存储会话 var / lib / php / session

framework:
    session:
        save_path: ~

这就是全部,现在即使在树枝模板中,我也可以在另一个控制器中使用该会话。

感谢大家的帮助!

答案 2 :(得分:0)

控制器操作中的会话可以通过以下两种方式获得:

  1. $this->getRequest()->getSession()
  2. $request->getSession()