显示无重定向的快闪消息(如转发).消息显示两次


Show flash message without redirect (eg forward). Messages shown twice

是否可以在Symfony 2中显示flash消息而不重定向?或者在谷歌群组上的另一个可能的解决方案中编辑核心文件?

//Symfony'Component'HttpFoundation'Session 
public function setFlash($name, $value, $persist = true) 
{ 
    if (false === $this->started) { 
        $this->start(); 
    } 
    $this->flashes[$name] = $value; 
    if($persist) { 
        unset($this->oldFlashes[$name]); 
    } 
    else { 
        $this->oldFlashes[$name] = $value; 
    } 
} 

更新

哦,实际上我注意到,如果我只是使用转发,会显示闪烁消息,但它仍然会在下一个请求

时显示

如果您不想在下一次请求之前持续使用flash,为什么要使用flash?

你找不到其他显示反馈的方法,比如模板参数吗?

如果没有,你可以将其添加到你的模板中(根据你显示的闪烁如下):

{% if app.session.hasFlash('notice') %}
<div class="flash-notice">
    {{ app.session.flash('notice') }}
    {{ app.session.removeFlash('notice') }}
</div>
{% endif %}

因此,在重定向之前显示这些闪烁的任何模板都会在返回响应之前将其从会话中删除。我认为这是最后一个更好的解决方案。

我将用一般的术语来说明,因为您想要的东西不是现成的标准。

此时,Symfony flash消息出现在请求之后,它们是这样的,为了保留它,您需要找到一个替代方案,使用ajax调用。

您需要使用ajax请求调用一个操作脚本,序列化表单的数据,返回消息,然后以更好的方式显示它。

我曾经http://jquery.bassistance.de/message/demo/在一些项目中,与这个示例jquery调用一起,效果很好:

 $.post("/product/saveAjax", { $("#product").serialize() },
 function(data){
  $().message(data.message);
 }, "json");

使用ajax保存项目的返回是不同的,在这种情况下,我使用JSON对数据进行编码,因此,如果您想执行其他操作,可以在JSON数组中注入更多变量,在函数(data){…}中操作它们

希望对有所帮助

创建了Flash消息,以便在表单提交成功后进行重定向。这就是为什么他们为2个请求而活。

如果你想在应用程序中管理soem用户通知,请在布局中制作一个控制器来管理通知TWIG块。此块可以嵌入flash消息和您用控制器处理的这些通知。你必须在会话中设置它们,在NotificationController中删除它们,这没关系。。。