gpt4 book ai didi

prestashop - 对 prestashop PDF 生成过程感到困惑。处理逻辑的代码在哪里?

转载 作者:行者123 更新时间:2023-12-01 00:42:17 26 4
gpt4 key购买 nike

我想深入了解prestahop内部结构并修改一些部分。我停在 PDF 中。我想找不到用于处理 的 Controller 管理PDF generateDeliverySlipPDF

    {if $order->delivery_number}
<a class="btn btn-default _blank" href="{$link->getAdminLink('AdminPdf')|escape:'html':'UTF-8'}&amp;submitAction=generateDeliverySlipPDF&amp;id_order={$order->id}">
<i class="icon-truck"></i>
</a>
{/if}

谁能帮我弄清楚内部流程?我找不到处理 generateDeliverySlipPDF 的方法。

最佳答案

AdminPdfController位于 /controllers/admin/AdminPdfController.php .
submitAction=generateDeliverySlipPDF部分 url 将调用方法 processGenerateDeliverySlipPDF()在这个 Controller 里面。

这是这个方法:

public function processGenerateDeliverySlipPDF()
{
if (Tools::isSubmit('id_order')) {
$this->generateDeliverySlipPDFByIdOrder((int)Tools::getValue('id_order'));
} elseif (Tools::isSubmit('id_order_invoice')) {
$this->generateDeliverySlipPDFByIdOrderInvoice((int)Tools::getValue('id_order_invoice'));
} elseif (Tools::isSubmit('id_delivery')) {
$order = Order::getByDelivery((int)Tools::getValue('id_delivery'));
$this->generateDeliverySlipPDFByIdOrder((int)$order->id);
} else {
die(Tools::displayError('The order ID -- or the invoice order ID -- is missing.'));
}
}

在此 Controller 中,您将找到其他方法来生成发票、订单、...和其他 PDF。

如果您需要更多信息,请随时询问。

编辑:

如果您想以适当的方式更改格式,则必须覆盖这些类:
/override/classes/pdf/PDFGenerator.php :

<?php

/**
* @since 1.5
*/
class PDFGenerator extends PDFGeneratorCore
{

/**
* @param bool $use_cache
* @param string $orientation
* @param string $format
*/
public function __construct($use_cache = false, $orientation = 'P', $format = 'A4')
{
TCPDF::__construct($orientation, 'mm', $format, true, 'UTF-8', $use_cache, false);
$this->setRTL(Context::getContext()->language->is_rtl);
}
}
/override/classes/pdf/PDF.php :

<?php

/**
* @since 1.5
*/
class PDF extends PDFCore
{

/**
* @param $objects
* @param $template
* @param $smarty
* @param string $orientation
*/
public function __construct($objects, $template, $smarty, $orientation = 'P', $format = 'A4')
{
parent::__construct($objects, $template, $smarty, $orientation);
$this->pdf_renderer = new PDFGenerator((bool)Configuration::get('PS_PDF_USE_CACHE'), $orientation, $format);
}
}
/override/controllers/admin/AdminPdfController.php :

<?php

class AdminPdfController extends AdminPdfControllerCore
{
public function generatePDF($object, $template)
{
switch($template) {
case PDF::TEMPLATE_DELIVERY_SLIP:
$format = array(210, 50000); // Replace with your desired size
break;
default:
$format = 'A4';
}

$pdf = new PDF($object, $template, Context::getContext()->smarty, 'P', $format);
$pdf->render();
}
}

现在您可以为每个 PDF 指定格式。
您会找到关于 $format的信息在 this place

此代码尚未经过测试,但应按预期工作。如果您遇到任何问题,请告诉我。

您需要删除 /cache/class_index.php添加这些覆盖以清除 Prestashop 内部类路径缓存后。

关于prestashop - 对 prestashop PDF 生成过程感到困惑。处理逻辑的代码在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36720210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com