Opencart 遗失订单:$this->model_checkout_order->addOrderHistory(...) 未被执行

Opencart Missing Orders: $this->model_checkout_order->addOrderHistory(...) not being executed

无法更新每个传入订单的订单状态。任何默认扩展程序(例如 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 日志,但找不到任何相关内容。

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

我被困住了,如果你们能给我一些关于这方面的信息就太好了。谢谢~

使用 opencart 3.0.3.7

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

我不知道有些控制器不能 return 一个值,尤其是当它正在监听一个事件时。