【问题标题】:How to use Sessions in Symfony? [closed]如何在 Symfony 中使用会话? [关闭]
【发布时间】:2010-12-18 04:58:43
【问题描述】:

就像在经典 PHP 中一样,我们使用魔法变量来启动和创建会话,那么在 Symfony 中如何做到这一点?

【问题讨论】:

    标签: php symfony symfony1 symfony-1.4


    【解决方案1】:

    在 Symfony2 中,语法不同:

    $session = $this->getRequest()->getSession();
    
    // store an attribute for reuse during a later user request
    $session->set('foo', 'bar');
    
    // in another controller for another request
    $foo = $session->get('foo');
    

    您还可以从 Twig 获取会话变量,而无需显式传递会话变量(它在全局“应用程序”中):

    {{ app.session.get('foo', 'bar'); }}
    

    【讨论】:

    • Symfony: 因为谁真正关心得墨忒耳法则?
    • 使用会话变量如何违反得墨忒耳法则?
    • @Videl 它没有使用违反 LoD 的会话,它是 symfony 的抽象层。
    • getRequest() 从 Symfony 2.4 开始被弃用。现在执行此操作的正确方法是将请求注入控制器并调用$request->getSession()api.symfony.com/2.0/Symfony/Component/HttpFoundation/…
    • 这与不关心得墨忒耳法则的字面意思相反,symfony 框架是在与自己的 api 通信
    【解决方案2】:

    在您的控制器中,您可以通过用户对象访问会话变量。

    // Get a session value
    $name = $this->getUser()->getAttribute('name', 'default_value');
    // Set a session value
    $this->getUser()->setAttribute('name', $value);
    

    【讨论】:

    • 在您看来,您可以通过$sf_user 变量访问会话变量,就像您在控制器中使用$this->getUser() 一样。
    • 如果您没有用户或防火墙,我认为这不会起作用。
    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多