如何在 Symfony 中使用会话? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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() 一样。 如果您没有用户或防火墙,我认为这不会起作用。

以上是关于如何在 Symfony 中使用会话? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony 中增加会话超时

如何在 Symfony 中延长会话 cookie 的生命周期?

如何创建将在 Symfony2 中过期/销毁会话的命令控制台?

如何销毁 Symfony 2 中的所有会话

Symfony - 如何将初始数据加载到数据库[关闭]

Symfony 2:如何避免会话表被学说迁移删除?