在ZF1中,我使用视图组件来呈现电子邮件模板,如下所示:
$html = new Zend_View();
$html->setScriptPath($path);
$html->assign($vars);
$body = $html->render($template);
// prepare the mail
$mail = new Zend_Mail('utf-8');
$mail->setBodyHtml($body);
我如何在ZF2中解决这个问题?我想我需要创建一个新的ViewModel,分配我的变量并设置模板,但是从哪里开始?
请注意,我在控制器中没有这样做。我已经看到了这个问题ZF2 view rendering,其中html在MVC响应中返回,但我希望渲染一个模板并将结果存储在一个变量中(然后我将其分配给电子邮件正文)。我会在服务层执行此操作。
与MVC流程相关的视图实例与我用于呈现电子邮件正文的实例无关。
答案 0 :(得分:6)
您需要ServiceManager
才能执行此操作。
在您的控制器中尝试此操作:
$view = new ViewModel(array(
'foo'=>'bar',
));
$view->setTemplate('path/to/phtml');
$view->setTerminal(true);
$serviceManager = $this->getServiceLocator();
$emailBody = $serviceManager->get('ViewRenderer')->render($view);