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

时间:2015-07-03 07:42:11

标签: cakephp pdf cakephp-2.4

我试图从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;
 }

1 个答案:

答案 0 :(得分:1)

你以非常倒退的方式接近这一点。您的Controller应该为View准备数据;而在您的代码中,您正在准备视图中的数据以传递给Controller。

在路线中传递HTML确实不是一个好主意。最好使用控制器操作中的View模板生成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的模板。

我建议您在Generating PDFs with CakePHP上查看一下这篇文章。您正在使用的PDF库似乎也有CakePHP 2.x plugin,您应该考虑使用它。