2012-09-24 48 views
1

在CakePHP 2.0,使用CakeEmail新組件似乎不輸出閃光消息: 在我的控制,我把:CakeEmail:沒有呈現Flash消息

$email = new CakeEmail(array('log'=>true)); 
$email->transport('Debug'); 

在我看來

echo $this->Session->flash('email'); 

但什麼都不打印出來。 在2.0中刪除了該功能(flash)嗎?

回答

1

當然有CakePHP中2.0閃存功能的詳細點擊此處查看:http://book.cakephp.org/2.0/en/core-libraries/components/sessions.html

如果你想在視圖中獲得烏爾閃光消息,你必須首先設置它在你的控制器動作。

//controller 
$this->Session->setFlash('email'); 

//view 
echo $this->Session->flash(); 

//以上將輸出。

<div id="flashMessage" class="message"> 
'email'. 
</div> 
2

沒有蛋糕電子郵件庫或組件或傳輸類觸摸會話或寫任何這樣的Flash內容。他們從來沒有做過我所知道的。 ,但它們將電子郵件內容作爲DebugTransport的數組返回。

所以你會想獲取返回的數組並記錄它扔掉:

$res = $this->Email->send(); 
$this->Session->setFlash($res ? 'Email sent' : 'Email not sent'); 

嚮往之類的。

+0

他們在1.3。如果您將郵件作爲調試進行發送,則它們將保存在會話變量中,而不需要服務器進行測試。 http://book.cakephp.org/1.3/view/1635/Debugging-Emails不知道它是否適用於2.0 – petervaz

+0

,正如我剛纔所說的,在cake2.x的電子郵件中的任何地方絕對不會訪問會話 - 所以這在邏輯上是不可能發生的。所以請使用新的「更好」的方式使用返回的數據來調試電子郵件。 – mark

+0

明白了。我一直在爲你的「他們從來沒有做過我所知道的事情」這樣做,就像它在某個時候所做的那樣,現在我明白你只是在談論2.x。 – petervaz

0

在Cake 2.x中,調試傳輸不會在會話中設置電子郵件內容。只需檢查返回值,$contents = $email->send();。 $內容將包含標題和消息,以便根據需要使用它們。

0
$response = $Email->send(); 

$response['headers']; // headers as string 
$response['message']; // message body with attachments 

$this->Session->setFlash($response['headers'].$response['message']); 

確保在佈局文件中包含以下內容。

echo $this->Session->flash();