私はケーキが初めてですが、どういうわけかこれまでのところうまくいきました。html2pdfがCakephpからpdfドキュメントを作成するための便利な方法であることがわかった後、html2ps / pdfをインストールし、いくつかの小さな問題の後でそれが機能しました。だから今、私は今、コントローラーを変更しないと、Renderが次のように機能するようになります。
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