PhpRenderer没有从控制台路由渲染我的视图脚本


PhpRenderer not rendering my view script from console route

我在zf2应用程序上创建了一个控制台路由,通过命令行发送电子邮件。因此,在我的操作中,我将按照文档中的规定创建一个新的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请求中执行,则完全相同的代码可以正常工作。

有人能帮我吗?

我怀疑这是因为您没有设置正确的解析程序路径。

作为参考,这是我采用的方法:

    // 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);