Opencart 缺少订单:$this->model_checkout_order->addOrderHistory(...) 未执行

问题描述

无法更新每个传入订单的订单状态。任何认扩展(例如 cash on delivery)和任何运行 $this->model_checkout_order->addOrderHistory(...); 的控制器都不会执行。但是,似乎仍在接收订单电子邮件的事件正在被触发。 ?

即使在管理区域,更新丢失订单的状态或任何订单也不起作用。我尝试将函数 addOrderHistory 复制到 testOrderHistory(具有完全相同的内容)并将每次调用$this->model_checkout_order->addOrderHistory(...); 更新为 $this->model_checkout_order->testOrderHistory(...);,现在似乎可以工作了。

但是我想避免仅仅为了修复它而编辑核心文件。有没有其他办法?将所有核心文件$this->model_checkout_order->addOrderHistory(...); 改为 $this->model_checkout_order->testOrderHistory(...);

也感觉不对

我还检查了服务器日志和 opencart 日志,但找不到任何相关内容

我还测试了从 testOrderHistory()addOrderHistory() 返回的字符串并继续记录它们。日志记录在 controller 的末尾工作正常,但 $this->model_checkout_order->addOrderHistory(...); 总是返回一个 bool(true) 而不是我一直试图返回的字符串。但是 $this->model_checkout_order->testOrderHistory(...); 似乎正确返回了字符串。

我被困住了,如果你们能就此给我一些启发,那就太好了。谢谢~

使用 opencart 3.0.3.7

解决方法

我做到了。 $this->model_checkout_order->addOrderHistory(...); 没有被调用,因为我添加了另一个自定义函数来侦听返回布尔值的事件 addOrderHistory/before。这反过来会停止序列。

我不知道有些控制器不能返回值,尤其是在监听事件时。