渲染Zend框架行动,HTML电子邮件
-
20-09-2019 - |
题
我具有被渲染经由布局一些内容的动作。
其实我是想在电子邮件中发送此输出。什么是Zend框架来实现这一目标的最佳方式是什么?
我知道我需要使用Zend_Mail
组件发送电子邮件,但我不清楚如何输出附上我的行动来Zend_Mail
的。
我已经做了ContextSwitch动作助手一些阅读,我认为这可能是合适的,但我仍然不相信。
我还是新来Zend框架。我已经习惯了使用类似的输出缓冲技术来捕获输出,这点我不认为是Zend公司做到这一点的正确方法。
解决方案
从控制器:
// do this if you're not using the default layout
$this->_helper->layout()->disableLayout();
$this->view->data = $items;
$htmlString = $this->view->render('foo/bar.phtml');
如果你从一类,这不是依靠Zend_Controller_Action的一个实例,这样做,你可能必须先创建一个Zend_View的实例,要做到这一点:
$view = new Zend_view();
// you have to explicitly define the path to the template you're using
$view->setScriptPath(array($pathToTemplate));
$view->data = $data;
$htmlString = $view->render('foo/bar.phtml');
其他提示
public static function sendMail($data = array(), $template = ''){
$html = new Zend_View();
$html->setScriptPath(APPLICATION_PATH . '/modules/default/views');
// assign valeues
if(count($data['Assigni'])){
foreach($data['Assigni'] as $assign){
$html->assign($assign['key'], $assign['value']);
}
}
// create mail object
$mail = new Zend_Mail('utf-8');
// render view //'scripts/newsletter/emailtemplate.phtml'
$bodyText = $html->render($template);
$mail->addTo($data['To']);
$mail->setSubject($data['Subject']);
$mail->setFrom($data['From'], $data['FromName']);
$mail->setBodyHtml($bodyText);
$mail->send();
}
在分派操作,则可以赶上postDispatch()方法的事件的插件的方法,可以动态地添加到从期望的动作堆栈。在您通过
收到响应的内容//in action
//...some php code
Zend_Controller_Front::getInstance()->registerPlugin(new My_Plugin());
//in plugin
$htmlCode = $this->_response->getBody();
我不能给你一个超详细的答案,但如果你想完整的输出(包括布局),我想你想要写你的电子邮件功能作为一个动作助手,并在该执行postDispatch钩插入所述Zend_Controller_Action->调度()循环。
请参阅 http://nethands.de/download/zenddispatch_en.pdf 为全Zend框架调度过程概述
如果您不需要包含在电子邮件内容的布局,那么你可以在多点做到这一点,包括使用上下文切换,如你所提到的。
不隶属于 StackOverflow