【问题标题】:How to set a symfony session如何设置 symfony 会话
【发布时间】:2016-08-17 14:37:22
【问题描述】:

这可能是一个荒谬的问题,但我现在才知道 Symfony 大约几个月,而且我从未配置过会话。我了解documentation 中发生了什么,但是我在哪里实例化新会话?我是否在我的 editAction 中执行此操作?

因为我有一个 editAction,一旦有人进行了编辑,就会向主管发送一封电子邮件,但我如何将其限制为每个会话的每个订单编辑一封电子邮件?

我是否只需要在我的 editAction 中添加类似的内容?

$session = new Session();
$session->start();

// set and get session attributes
$session->set('order', '...');
$session->set('supervisorEmail', '...');
$session->set('time', '...');

有人可以帮助我提供完整的示例或指导我吗?我会非常感激的。谢谢。

【问题讨论】:

  • 有会话服务,你可以在任何地方注入。

标签: php symfony session


【解决方案1】:

会话由内核自动启动,因此您不必手动启动它。在控制器中,您可以通过请求检索:

use Symfony\Component\HttpFoundation\Request;    

public function editAction(Request $request)
{
    $session = $request->getSession();
    $session->set('order', '...');
    $session->set('supervisorEmail', '...');
    $session->set('time', '...');
}

您还可以检查会话是否已经具有属性,如下所示:

if (false === $session->has('order') {
    $session->set('order', '...');
}

【讨论】:

  • 谢谢!设置会话变量已经开始有意义了,现在如何检查是否已发送电子邮件以防止在同一会话中再次编辑相同的对象?
  • 第一次发送邮件时,注册一个会话变量。并在编辑时,在发送新电子邮件之前检查此变量是否已注册$session->has()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 2016-08-21
  • 2021-12-28
  • 2014-09-04
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多