我遇到CakePDF
的问题。我正在使用CakePHP 2.3.6。我设置好一切,bootstrap&核心文件没问题。
现在,我想生成许多pdf文件并下载它们。下载是可以的,但是当我下载文件时,我看到生成的pdf文件说Undefined $data
,我将$data
发送到视图文件。
这是我的控制器代码:
App::uses('CakePdf', 'CakePdf.pdf');
// ...
public function createPdf($id) {
$data = $this->DBTable->find('all', array(
'conditions' => array(
'DBTable.id' => $id
)
));
$CakePdf = new CakePdf();
$path = APP . DS . 'pdf' . DS;
foreach($data as $key => $var) {
$CakePdf->template('create', 'default');
$this->set('var', $var);
$this->pdfConfig = array(
'orientation' => 'portrait',
'filename' => $var['id'] . ".pdf"
);
$CakePdf->write($path . $var['id'] . ".pdf");
}
}
在这里,我正在以其他方式下载文件,与此问题无关,因为下载还可以。当我运行它时,所有文件都被下载,当我看到这些文件时,他们会说" Udefined var",看起来他们没有收到和变量名为" $ var"
我把视图文件&这个布局正是塞拉姆所说的。
我现在该怎么办?请帮帮我。
答案 0 :(得分:1)
最后我得到了一个解决方案。在Controller function
:
$data=$this->ModelName->find('all');
$CakePdf=new CakePdf();
$CakePdf->template('view_file','default');
$this->pdfConfig=array('orientation'=>'portrait','filename'=>$data['name']);
$CakePdf->viewVars(array('data'=>$data));
$CakePdf->write($path.$data['name'].".pdf");
在这里,我们必须在view_file.ctp
中存储View/Pdf/
,在default
中存储View/Layouts/pdf/
,其中view_file.ctp
是我们要转换的视图文件pdf
,default
是此特定视图文件的layout
。
此处,viewVars()
函数将data
传递给视图文件,如:
$this->set->('data',$data);
如果有什么不清楚,请告诉我。 感谢。