我在zf2应用程序上创建了一个Console路由,通过命令行发送电子邮件。因此,在我的操作中,我正在创建一个新的PhpRenderer,如文档(http://framework.zend.com/manual/2.0/en/modules/zend.view.renderer.php-renderer.html)中所指定的那样,以呈现我的电子邮件模板(替换变量等)并发送它。
以下是我正在使用的代码:
$renderer = new \Zend\View\Renderer\PhpRenderer();
$resolver = new \Zend\View\Resolver\TemplateMapResolver();
$resolver->setMap(array(
'mailTemplate' => $config['template']
));
$renderer->setResolver($resolver);
$model = new \Zend\View\Model\ViewModel();
$model->setTemplate('mailTemplate');
$model->setVariables(array(
'recipient' => 'foo@bar.com'
));
$emailBody = $renderer->render($model);
然而,似乎Phprenderer不在我的.phtml
文件中呈现任何PHP。如果我在普通的HTTP请求中执行它,那么完全相同的代码可以正常工作。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
我怀疑是因为你没有设置解析器的正确路径。
作为参考,这是我采取的方法:
// render HTML and TEXT bodies
$basePath = realpath(__DIR__ . '/../../../view/emails');
$htmlFilename = 'body.html.phtml';
$txtFilename = 'body.txt.phtml';
$renderer = new PhpRenderer();
$renderer->resolver()->addPath($basePath);
$sm = $this->getServiceManager();
$renderer->setHelperPluginManager($sm->get('ViewHelperManager'));
$model = new ViewModel();
$model->setVariable('name', $user->getName());
$model->setTemplate($txtFilename);
$textContent = $renderer->render($model);
$model->setTemplate($htmlFilename);
$htmlContent = $renderer->render($model);