Prestashop:使用新的 tpl 复制发票 PDF
Prestashop: duplicate Invoice PDF with new tpl
如何在 Prestashop 中复制生成发票 PDF 流程?我想使用不同的 tpl 文件,但其余的应该保持不变。
让我解释一下,我已经做了什么:
- HTMLTemplateInvoice 为 HTMLTemplateMahnung 并更改了 Class 名称。
- 添加:const TEMPLATE_MAHNUNG = 'Mahnung';到文件 classes/pdf/PDF.php
- 在 root/pdf 文件夹中创建了文件 mahnung.tpl
添加到AdminPdfController.php:
public function processGenerateMahnungPdf() {
if (Tools::isSubmit('id_order')) {
$this->generateMahnungPDFByIdOrder(Tools::getValue('id_order'));
} elseif (Tools::isSubmit('id_order_invoice')) {
$this->generateInvoicePDFByIdOrderInvoice(Tools::getValue('id_order_invoice'));
} else {
die(Tools::displayError('The order ID -- or the invoice order ID -- is missing.'));
}}
和
public function generateMahnungPDFByIdOrder($id_order)
{
$order = new Order((int)$id_order);
if (!Validate::isLoadedObject($order)) {
die(Tools::displayError('The order cannot be found within your database.'));
}
$order_invoice_list = $order->getInvoicesCollection();
Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list));
$this->generatePDF($order_invoice_list, PDF::TEMPLATE_MAHNUNG);
}
但它不起作用。它只是不生成 PDF。
有什么帮助吗?
更新
我必须包括 class: require_once _PS_ROOT_DIR_ 。 '/classes/pdf/HTMLTemplateMahnung.php';
现在可以正常使用了。任何人都知道为什么我必须这样做?我没有看到核心文件的任何包含:S
Pretashop 使用文件 cache/class_index.php 来跟踪它需要的 classes。
每次添加新的覆盖,甚至 class 或控制器时,都需要删除(或重命名)此文件。如果找不到,Prestashop 将重新创建索引集文件夹中的所有文件(classes、控制器、覆盖和其他)。
如何在 Prestashop 中复制生成发票 PDF 流程?我想使用不同的 tpl 文件,但其余的应该保持不变。
让我解释一下,我已经做了什么:
- HTMLTemplateInvoice 为 HTMLTemplateMahnung 并更改了 Class 名称。
- 添加:const TEMPLATE_MAHNUNG = 'Mahnung';到文件 classes/pdf/PDF.php
- 在 root/pdf 文件夹中创建了文件 mahnung.tpl
添加到AdminPdfController.php:
public function processGenerateMahnungPdf() { if (Tools::isSubmit('id_order')) { $this->generateMahnungPDFByIdOrder(Tools::getValue('id_order')); } elseif (Tools::isSubmit('id_order_invoice')) { $this->generateInvoicePDFByIdOrderInvoice(Tools::getValue('id_order_invoice')); } else { die(Tools::displayError('The order ID -- or the invoice order ID -- is missing.')); }}
和
public function generateMahnungPDFByIdOrder($id_order)
{
$order = new Order((int)$id_order);
if (!Validate::isLoadedObject($order)) {
die(Tools::displayError('The order cannot be found within your database.'));
}
$order_invoice_list = $order->getInvoicesCollection();
Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list));
$this->generatePDF($order_invoice_list, PDF::TEMPLATE_MAHNUNG);
}
但它不起作用。它只是不生成 PDF。
有什么帮助吗?
更新
我必须包括 class: require_once _PS_ROOT_DIR_ 。 '/classes/pdf/HTMLTemplateMahnung.php';
现在可以正常使用了。任何人都知道为什么我必须这样做?我没有看到核心文件的任何包含:S
Pretashop 使用文件 cache/class_index.php 来跟踪它需要的 classes。
每次添加新的覆盖,甚至 class 或控制器时,都需要删除(或重命名)此文件。如果找不到,Prestashop 将重新创建索引集文件夹中的所有文件(classes、控制器、覆盖和其他)。