2012-01-06 120 views
7

是否可以在没有重定向的情况下在Symfony 2中显示Flash消息?或者在谷歌群组上编辑另一个possible solution核心文件?显示不重定向的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; 
    } 
} 

UPDATE

哦,其实我发现,如果我只用一个前锋,提示信息会显示,但它仍然会在下次请求

+0

你的意思是显示一个没有页面刷新的flash吗?或者你的意思是显示一个闪光和新鲜(相同,因为它不重定向)页面? – swiecki 2012-01-06 06:20:32

+1

@swiecki通常情况下,Flash消息已设置,然后用户被重定向。但是,如果我没有重定向用户,就像我刚刚使用了转发或仅仅想在当前请求中显示消息一样? – 2012-01-06 06:31:29

+1

使用javascript – Dau 2012-01-06 07:11:04

回答

7

为什么使用闪光灯,如果你不希望他们坚持到下一个需求美东时间 ?

难道你找不到其他方式来显示反馈,如模板参数吗?

如果没有,你可以在你的模板中添加此(根据您显示像下面闪烁):

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

,使得重定向之前显示这些闪光的任何模板将会议返回响应之前将其删除。我认为这是最好的解决方案。

3

我会笼统地讲,是因你想要一些不是标准的东西。

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

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

我在一些项目中使用这个样品的jquery调用一起http://jquery.bassistance.de/message/demo/,做工不错:

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

从节约使用Ajax的项目回报是不同的,在编码使用JSON数据这种情况下i'm,所以,如果你想perfom可以将JSON数组中注入更多的变数另一个动作,操纵它们的内部功能(数据){...}

希望帮助

1

已经创建了Flash消息,以便在通过表单提交成功后您通常执行的重定向。这就是为什么他们活了2次。

如果您想管理应用中的soem用户通知,请在布局中设置一个管理通知TWIG块的控制器。该块可以嵌入闪光消息以及您使用控制器处理的这些通知。你必须在你的会话中设置它们,在你的NotificationController中删除它们,它是没问题的...