CakePHP:如何使用控制器内部的视图元素并使用 cakephp 版本 2.4.5 获取 html 以生成 pdf

CakePHP: How to use a view element inside of a controller and get html for genrate pdf using cakephp version 2.4.5

我试图从 CakePHP 的视图中获取 HTML,并想在控制器中使用它来生成 PDF,但是当我在变量中发送 HTML 时,我得到了一个错误,但它正在为文本。我这样调用函数:

<?php

    $dataforpdf = '<h1>this is test text</h1>';


    echo $this->Html->link('Downloads PDF',  
        array('controller' =>'employers','action'=>'generatePDF',$dataforpdf )
     ); 
?>

我的 CakePHP 版本 2.4.5 和我的控制器功能:-

public function generatePDF($id = null)
{    
    $dataforpdf  = $id;

    require('mpdf/mpdf.php');

    $mpdf=new mPDF();
    $mpdf->WriteHTML($strContent);
    $mpdf->Output('Pdf Report.pdf','D');die;
 }

您正在以一种非常倒退的方式来处理这个问题。您的控制器应该为视图准备数据;而在您的代码中,您正在准备视图中的数据以传递给控制器​​。

在路由中传递 HTML 确实不是一个好主意。最好使用控制器操作中的视图模板生成 HTML:-

public function generatePDF($id = null)
    $View = new View($this, false);
    $View->set(compact('some', 'vars'));
    $html = $View->render('view_name', 'layout_name');

    require 'mpdf/mpdf.php';
    $mpdf = new mPDF();
    $mpdf->WriteHTML($html);
    $mpdf->Output('Pdf Report.pdf','D');
    die;
}

此处 view_name.ctp 将是一个模板,其中包含您的 PDF 所需的 HTML。

对于您正在使用的 PDF 库,我建议您阅读 Generating PDFs with CakePHP. There also appears to be a CakePHP 2.x plugin 上的这篇文章,您应该考虑使用它。