我试图从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;
}
答案 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,您应该考虑使用它。