当客户位于 opencart 扩展程序的 checkout/success 页面时,如何检索订单 ID?

How to retrieve order id, when the customer is in checkout/success page in a opencart extension?

我正在为 opencart 2.3 开发一个扩展。我想在客户访问 checkout/success 页面时检索订单 ID。这是我在扩展中的代码?

if(isset($this->request->get['route']) && $this->request->get['route'] == "checkout/success")
{
  if (isset($this->session->data['order_id']) && (!empty($this->session->data['order_id']))) 
     { $order_id = $this->session->data['order_id']; ... }
}

我知道这行不通,因为我在 \catalog\controller\checkoutsuccess.php 中看到了这段代码 unset($this->session->data['order_id']);

任何人都可以在不触及 opencart 的主文档的情况下帮助我解决这个问题吗?

我有一个免费的 vqMod 扩展程序可以做这件事。在 https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=18125

注意:要使用 vqMod 扩展,您必须先为 OpenCart 安装 vqMod。此处提供详细信息和说明:https://github.com/vqmod/vqmod/wiki/Installing-vQmod-on-OpenCart

您必须在该值被清除之前保存它(正如您所指出的),然后您可以稍后显示它。这就是我的 mod 所做的。

逻辑:

<file name="catalog/language/en-gb/checkout/success.php">
        <operation info="Add language string">

                <search position="after"><![CDATA[
                // Text
                ]]></search>

                <add><![CDATA[
                $_['text_order']   = 'Your order ID is %s.';
                ]]></add>

        </operation>
</file>
<file name="catalog/controller/checkout/success.php">
        <operation info="Save Order ID">

                <search position="after"><![CDATA[
                 if (isset($this->session->data['order_id'])) {
                ]]></search>

                <add><![CDATA[
                $this->session->data['last_order_id'] = $this->session->data['order_id'];
                ]]></add>

        </operation>
</file>
<file name="catalog/controller/checkout/success.php">
        <operation info="Output Order ID">

                <search position="before"><![CDATA[
                $data['button_continue']
                ]]></search>

                <add><![CDATA[
                $data['text_message'] .= sprintf($this->language->get('text_order'),  $this->session->data['last_order_id']);
                ]]></add>

        </operation>
</file>