我是蛋糕的新手,但到目前为止我还是设法通过了。在我发现 html2pdf 是一种从 Cakephp 生成 pdf 文档的便捷方式之后,我安装了 html2ps/pdf 并且在遇到一些小问题后它可以工作。所以现在我要说的是,如果我不修改我的控制器 beforeRender 函数,例如:
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('download','view');
}
我只是在我创建的 pdf 中看到我的登录页面。在我的 beforeRender 函数中设置 $this->Auth->allow 值显然会打开每个人在未经授权的情况下获得完美 pdf 的方式。整个控制器看起来像这样:
<?php
class DashboardController extends AppController {
var $name = 'Dashboard';
var $uses = array('Aircrafts','Trainingplans',
'Fstds','Flights','Properties','Person');
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('download','view');
}
function view() {
/* set layout for print */
$this->layout = 'pdf';
/* change layout for browser */
if> (!isset($this->params['named']['print']))
$this->layout = 'dashboard';
/* aircrafts */
$this->Aircrafts->recursive = 0;
$aircrafts =$this->Aircrafts->find('all');
$this->set('aircrafts',$aircrafts);
.... and so on....
$this->set('person_properties',$person_properties);
}
function download($id = null) {
$download_link = 'dashboard/view/print:1';
// Include Component
App::import('Component', 'Pdf');
// Make instance
$Pdf = new PdfComponent();
// Invoice name (output name)
$Pdf->filename = 'dashboard-' . date("M");
// You can use download or browser here
$Pdf->output = 'download';
$Pdf->init();
// Render the view
$Pdf->process(Router::url('/', true) . $download_link);
$this->render(false);
}
}
?>
因此,在我看来,$Pdf->process 调用通过或多或少地调用视图来获取数据,但是该进程没有登录,或者换句话说,没有授权获取我想要呈现到 pdf 中的数据。所以现在的问题是如何通过不向所有人开放我的应用程序来完成它。
最好的问候, cdjw