【发布时间】:2013-10-02 18:10:38
【问题描述】:
我正在使用 TCPDF 库在我的 CakePHP 应用程序中创建发票。如果我转到/invoices/view/1,我的 view.ctp 包含在浏览器中生成和显示 pdf 的代码。我想添加将 pdf 作为电子邮件附件发送的功能,因此我创建了操作 /invoices/send_invoice 并将代码从 view.ctp 复制到电子邮件模板中。
现在我陷入困境,我不知道如何在附加之前先生成 PDF。 在我使用的 view.ctp 页面模板的末尾
$pdf->Output(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf', 'I');
发送 pdf 以在浏览器中查看而不创建文件。如果我使用 'F' 或 'FI' 作为 $pdf->Output() 的最后一个参数,我可以保存文件,但不能保证用户在尝试将其作为电子邮件发送之前会查看发票。
在我的 send_invoice 操作中,我需要将 pdf 生成为文件以便附加:
$email->attachments(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf');
在我的电子邮件模板中包含生成 pdf 文件的代码意味着当我尝试附加该文件时该文件尚不存在。有没有办法从电子邮件模板本身附加文件?我在想也许我可以在我的 Invoice 模型上编写一个函数来生成 pdf,但我想使用一些 View Helpers(如 Number helper)来格式化我的数据。我可以在视图中执行代码然后返回控制器/动作而不显示视图吗?
【问题讨论】:
标签: php email cakephp pdf cakephp-2.4