我如何将字符串(html)提供给 ViewModel 而不是 zf2 上 html 文件的路径

How i can give string(html) to ViewModel instead path of html file on zf2

我的模板就在字符串中 "<html>..</html>" 由请求响应;

现在我想使用 DOMpdf

生成 pdf
$pdf = new PdfModel();
    $pdf->setOption('filename', 'monthly-report'); // Triggers PDF download, automatically appends ".pdf"
    $pdf->setOption('paperSize', 'a4'); // Defaults to "8x11"
    $pdf->setOption('paperOrientation', 'landscape'); // Defaults to "portrait"

    // To set view variables
    $pdf->setVariables(array(
      'message' => 'Hello'
    ));
    $pdf->setTemplate("path/to/something.html");

    return $pdf;

而不是 $pdf->setTemplate("path/to/something.html") 我如何将我的字符串模板提供给 $pdf(ViewModel)。

您可以 return 响应而不是 return 在视图模型中:

$string = "<h1>hello</h1>";
$response = $this->getResponse();
$response->setContent($string)->setStatusCode(200);
$response->getHeaders()->addHeaderLine('Content-Type', 'text/html');
return $response;

看来您需要实现自己的 StringRenderer 以实现 Zend/View/Renderer/RendererInterface 并扩展 DOMPDFModule/Mvc/Service/ViewPdfRendererFactory 以使用您的渲染器。

这是因为,PdfRenderer 被硬编码为使用默认的 ViewManager 渲染器,而 Zend 中没有 StringRenderer。

您可以使用不同的模板引擎,例如 mustache 或 twig,编译 php 然后从 DOMpdf 传递给 loadHtml 方法。