2012-01-06 119 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中刪除它們,它是沒問題的...