使用CakePdf数据未显示

时间:2014-07-06 04:58:05

标签: cakephp pdf-generation cakephp-2.3

我遇到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"

我把视图文件&这个布局正是塞拉姆所说的。

我现在该怎么办?请帮帮我。

1 个答案:

答案 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是我们要转换的视图文件pdfdefault是此特定视图文件的layout

此处,viewVars()函数将data传递给视图文件,如:

$this->set->('data',$data);

如果有什么不清楚,请告诉我。 感谢。