【问题标题】:Symfony, session always return nullSymfony,会话总是返回 null
【发布时间】: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 数组时遇到语法错误。您缺少右括号,但我怀疑这只是一个错字。
  • 你看到你的日志了吗?有错误吗?

标签: php symfony session


【解决方案1】:

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

【讨论】:

  • 你看到我的评论了吗?我认为您的会话配置错误,无法存储。
  • 我认为你的%kernel.root_dir%/sessions是不可写的
  • 也许不是因为我在应用程序中有一个这样的文件夹:app/sessions/sess_6dfget345fdger35 但文件是空的。
  • 什么时候修改的?也许您只有这个文件而无法访问它?
  • 嗯,我没有一直检查,但我想我一直可以访问这个文件,但一直是空的
【解决方案2】:

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

framework:
    session:
        save_path: ~

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

感谢大家的帮助!

【讨论】:

    【解决方案3】:

    可以通过以下两种方式之一获取控制器内部的会话:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2015-10-11
      • 2019-06-08
      • 2017-07-03
      • 2014-03-04
      • 2016-11-02
      • 2014-05-06
      相关资源
      最近更新 更多