Prestashop:使用新的 tpl 复制发票 PDF

Prestashop: duplicate Invoice PDF with new tpl

如何在 Prestashop 中复制生成发票 PDF 流程?我想使用不同的 tpl 文件,但其余的应该保持不变。

让我解释一下,我已经做了什么:

  1. HTMLTemplateInvoice 为 HTMLTemplateMahnung 并更改了 Class 名称。
  2. 添加:const TEMPLATE_MAHNUNG = 'Mahnung';到文件 classes/pdf/PDF.php
  3. 在 root/pdf 文件夹中创建了文件 mahnung.tpl
  4. 添加到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、控制器、覆盖和其他)。