【问题标题】:Symfony 4 : Display flashbag after logoutSymfony 4:注销后显示 flashbag
【发布时间】:2020-03-02 04:58:47
【问题描述】:

我有这个网站,用户必须通过测试,最后他们才能访问测试结果。它们可以通过邮件发送,这将发送一封电子邮件,从数据库中删除记录,断开用户并将他重定向到登录页面。

断开连接并重定向到登录页面后,我想显示一条确认消息,例如“感谢您的参与!您的结果刚刚通过电子邮件发送”。

这是我在我的函数中写的,在我的控制器里面:

$request->getSession()->getFlashBag()->add('success', 'Thanks for your participation ! ...');

return $this->redirectToRoute('app_logout');

这就是我在我的视图中写的(login_page)

{% for message in app.flashes('success') %}
    <div class="alert alert-warning alert-dismissible fade show" role="alert">
            {{ message }}
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
{% endfor %}

我在没有断开用户连接的情况下尝试了这个,并且有效! 但是一旦我使用'app_logout'路由,就不可能显示flashbag,因为用户的会话是不可访问的。 我还不知道该怎么做,总结一下,这是我的方向:

(VIEW) 显示测试结果-> (CONTROLLER) 发送邮件/添加 flashbag/重定向到 app_logout 的功能 ->(?) app_logout 断开用户并重新注册到-> (VIEW) 我要显示我的登录页面闪光灯包

有人知道可以做什么吗?

【问题讨论】:

  • @MichalS。你这是什么意思?
  • IMO 对您问题的回答在这里stackoverflow.com/questions/41062805/…
  • @MichalS。谢谢您,两者都提供的解决方案非常有趣!你认为我可以适应我的问题吗?因为我不想在每次用户注销时都显示一条消息,而只是在我向他发送邮件后断开用户连接时才显示消息
  • 当然 - 只需在您自己的处理程序中定义条件 :) 可能您将不得不编写一些服务来检查这种情况并“瞧”!

标签: php symfony twig


【解决方案1】:

最干净的解决方案可能是自定义Logout Success Listener,它会检查数据库中发送的电子邮件信息,并为新会话设置闪存包(如果适用)。

【讨论】:

  • 谢谢!但是我仍然有同样的问题,注销如何知道用户ID?为了检查是否发送了正确的电子邮件
猜你喜欢
  • 2017-04-25
  • 1970-01-01
  • 2013-09-18
  • 2015-07-11
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2014-05-31
  • 2013-09-05
相关资源
最近更新 更多