通過Zend_Framework,我想知道什麼被認爲是構建HTML電子郵件中發送內容的最佳實踐。在我的情況下,發送的電子郵件的內容由許多因素決定,例如數據庫中特定值的返回行數。因此,對我而言,內容是建立在發送與相關數據庫模型交談的電子郵件並確定內容應該是什麼的控制器中的。我不知道這個作品是否是我們的設計師和版權人經常想調整電子郵件中的副本,然後這需要他們對模型進行更改或要求我。我應該如何處理這個不同?我是否應該將HTML片段存儲在包含不同文本的地方,然後以某種方式調用這些片段?Zend Framework電子郵件內容生成
編輯從fireeyedboy回答下面,這樣做是可以接受的。在視圖內創建一個名爲「partials」的文件夾,並使用它存儲text/html片段,然後我可以在需要的位置調用,並使用regexp(或類似的)替換帶有動態值的特殊字符串。
$nview = new Zend_View();
$nview->setScriptPath(APPLICATION_PATH.'/views/partials/');
$bodytext = $nview->render('response.phtml');
$mail = new Zend_Mail();
$mail->setBodyText($bodytext);
// etc ...
例如,在這種情況下,其中兩個不同的模板可以根據從模型返回變量可以使用:
// within a controller
public function emailAction()
{
$images = new Model_ApplicationImages();
$totimages = count($images->fetchImages($wsid));
$acceptedImages = $images->fetchImages($wsid,'approved');
$accepted = count($acceptedImages);
$rejectedImages = $images->fetchImages($wsid,'rejected');
$rejected = count($rejectedImages);
$response = ($rejected == $totimages)?'rejected':'approved';
$nview = new Zend_View();
$nview->setScriptPath(APPLICATION_PATH.'/views/partials/');
$content = $nview->render($response.'.phtml');
$mail = new Zend_Mail();
$mail->setBodyText($content);
// etc
}
有沒有更優雅的方式,我可以/應該這樣做呢?
你能否澄清一點:「我可以在需要的地方調用,並使用正則表達式(或類似的)來替換帶有動態值的特殊字符串」?你的意思是來自你正在渲染的視圖內嗎? – 2010-01-20 15:11:13
在 – robjmills 2010-01-20 15:20:05
上面增加了更多細節@snaken:我不認爲他是這些事情的專家,但我認爲你應該問自己這些觀點有多不同。如果他們顯着不同,那麼這可能是最好的解決方案。但是如果視圖相似,我可能會用一些條件語句(如果需要,可能會加載部分)創建一個視圖。更令我擔心的是確定'$反應'的相當冗長的方式。似乎有點多餘來調用'fetchImages()'三次。我不知道這種方法當然有多密集。也許你已經使用了延遲加載/緩存機制? – 2010-01-20 19:54:33