如何在 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 中延长会话 cookie 的生命周期?