CakePHP アプリケーションで請求書を作成するために、TCPDF ライブラリを使用しています。/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を送信します。$pdf->Output() の最後のパラメーターとして 'F' または 'FI' を使用すると、ファイルを保存できますが、ユーザーが電子メールとして送信する前に請求書を表示することは保証されません。
私の send_invoice アクションでは、添付するために、pdf をファイルとして生成する必要があります。
$email->attachments(APP . 'File/pdf_invoices' . DS . 'invoice-'.$invoice['Invoice']['id'].'.pdf');
電子メール テンプレートに pdf ファイルを生成するコードがあるということは、添付しようとしたときにファイルがまだ存在していないことを意味します。電子メール テンプレート自体からファイルを添付する方法はありますか? Invoice モデルに関数を記述して pdf を生成できるのではないかと考えていましたが、ビュー ヘルパー (Number ヘルパーなど) を使用してデータをフォーマットしたいと考えています。ビューでコードを実行してから、ビューを表示せずにコントローラー/アクションに戻ることはできますか?