2016-06-28 27 views
-1

我想显示看到后未被移除的Flash消息。Symfony,如何创建持久性Flash消息

例如:

  • 您的电子邮件地址进行验证。请点击链接的电子邮件中必须显示,直到验证链接用户点击...“。
  • 检查出来的新功能...这一个是dismissable通过点击X

要做到这一点,最好的方法是什么?我应该创建一个数据库表并在任何页面视图中读取它(如果是这样,我怎样才能将结果传递给任何控制器和基本的树枝布局?) ,还是有什么更好的?

+3

调用它作为一个flash消息有点令人困惑,因为flash消息是被看到后被删除的消息。你所要求的与闪光消息无关;你只是想要一个常规的消息。 – Erik

+0

一开始我以为我可以使用flashbag,但是使用会话没有任何意义,因为如果他注销,他们将会消失 –

+0

无论如何,它甚至不是“消息”,消息是在收件箱中进行的,用户可以回复 –

回答

1

Flash消息意味着一旦你重新被删除发现它们。

如果有多个事情你的用户应该做的,你想通过消息通知他们做同样的事情。最佳方法是在用户表中添加列,将所有任务的默认状态设置为false。如果状态为false,则显示该消息,直到用户完成任务。

当用户完成任务时,请将其设置为true。

如果您想对任务执行大量操作,您可以为所有任务创建单独的表。

通过广泛的任务,我的意思是你可能想要记录完成时的日期时间,其他重要的消息或描述你想显示每个任务。

在Symfony中这样做的好处是,当用户登录时,您拥有任务以及用户对象的所有状态。所以对你来说也会更容易。

1

您可以使用peek()方法来取回邮件,同时将邮件放在邮袋中。

{% for flash_message in app.session.flashBag.peek('notice') %} 
    <div class="flash-notice"> 
     {{ flash_message }} 
    </div> 
{% endfor %}