0

注意:我在这里阅读了大量信息以及其他来源,包括官方文档。

我有一个付款延期 - 前标题 simplepay。

  1. 我想具体知道它是否是一种“监听”系统(预定义)事件的方式。
  2. 当订单状态发生变化时,我想运行一些逻辑。

admin/controller/extension/payment/simplepay.php我有这个(别处没有):

    public function install()
    {
        $this->load->model('setting/event');

        /** addEvent($code, $trigger, $action, $status = 1, $sort_order = 0); */
        $this->model_setting_event->addEvent(
            'do_transaction_on_order_status_change',
            'catalog/controller/api/order/history/after',
            'extension/payment/simplepay/doTransactionOnOrderStatusChange');
    }

    public function uninstall()
    {
        $this->load->model('setting/event');
        /** deleteEventByCode($code); */
        $this->model_setting_event->deleteEventByCode('do_transaction_on_order_status_change');
    }

    public function doTransactionOnOrderStatusChange(&$route, &$data)
    {
        // testing purpose for the moment
        $log = new Log('aaaaaa.log');
        $log->write('Route   ' . $route);
    }

该事件do_transaction_on_order_status_change已在事件列表中正确注册。我做错了什么?

4

1 回答 1

0

没关系!

过了一会儿,我明白了重点。

我的方法doTransactionOnOrderStatusChange(&$route, &$data)是用 3 个参数编写的。

喜欢doTransactionOnOrderStatusChange(&$route, &$data, &$output)

问题是 OC 3+ 不接受第三个参数,即使有“之前”或“之后”事件。

另一个问题是相关事件:它必须是admin/controller/sale/order/history/before. (或/之后)

没有其他关于订单更改的事件起作用。(可能此事件是唯一的管理事件,其余来自目录)。

如果我错了,请纠正我!

于 2021-10-20T19:35:49.777 回答