【问题标题】:How to destroy session in symfony 2.6?如何在 symfony 2.6 中销毁会话?
【发布时间】:2015-04-23 21:32:08
【问题描述】:

我试过这样做:

$session->remove();

还有这个:

$session->clear();

但它给出了以下错误:

在非对象上调用成员函数 clear()

【问题讨论】:

    标签: symfony session


    【解决方案1】:

    无效()

    清除所有会话数据并重新生成会话 ID。不要使用 session_destroy()。

    这实际上是你想要的。

    来源和更多信息: http://symfony.com/doc/current/components/http_foundation/sessions.html

    这些事情也很容易通过查看源代码来检查。

    对于这种情况,您应该检查SessionSessionInterface 来源:

    http://api.symfony.com/2.6/Symfony/Component/HttpFoundation/Session/SessionInterface.html

    http://api.symfony.com/2.6/Symfony/Component/HttpFoundation/Session/Session.html

    编辑。

    当然这个方法属于Session类所以你必须先在你的控制器中访问Session对象。

    所以我们去:

    http://symfony.com/doc/current/book/controller.html#managing-the-session

    我们看看如何做到这一点:

    public function indexAction(Request $request)
    {
        $session = $request->getSession();
    
        $session->invalidate(); //here we can now clear the session.
    }
    

    【讨论】:

    • 发生以下错误尝试从命名空间“Home\HomeBundle\Controller”调用函数“invalidate”
    • 这是Session对象的方法,而不是Controller。首先你必须访问Session 对象。请参阅我编辑的答案。
    • 谢谢它解决了我的问题 :) 还有一个问题...现在我这样做是为了在行动中开始会话 $session = new Session(); $this->session->start();我想写这个 $session = new Session();在构造函数中并在控制器的所有操作中使用它。我该怎么做,我在任何地方都找不到它的语法。
    • 我认为您应该使用内置会话管理symfony.com/doc/current/reference/configuration/… 然后您可以从任何控制器中的每个操作访问您的会话。
    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 2012-09-23
    • 2014-01-19
    • 2014-05-26
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多