0

我无法理解 Opencart 事件系统。例如,我想将订单推送到具有自己 API 的外部 CRM。我在文件/admin/controller/extension/module/mykmykpet_bitrix24.php中写了下一个代码:

class ControllerExtensionModuleMykmykpetBitrix24 extends Controller{
    public function install(){
        $this->load->model('extension/event');
        $this->model_extension_event->addEvent('Bitrix24','catalog/model/checkout/order/addOrder/after','extension/module/mykmykpet_bitrix24/newOrderToCRM');
    }

    public function uninstall(){
        $this->load->model('extension/event');
        $this->model_extension_event->deleteEvent('Bitrix24');
    }
}

接下来,为了训练我在/catalog/controller/extension/module/mykmykpet_bitrix24.php中编写了下一个代码:

class ControllerExtensionModuleMykmykpetBitrix24 extends Controller{
    public function newOrderToCRM($orderID){
        mail("mykmykpet@mykmykpet.xyz","Hello from OpenCart Event",$orderID);
    }    
}

接下来,我下测试订单并收到这封电子邮件: 电子邮件内容

但为什么我得到了?我等待一个订单标识符,但不是我使用的方法的路径。我的错误在哪里?请帮帮我。

4

2 回答 2

0

您将不得不查找$this->requestorder_id,但我确信它会在某个地方。它不会被事件系统作为参数传递。

于 2017-06-19T00:01:10.550 回答
0

OpenCart 2.3.0.2

在您的示例order_id中位于第三个参数中。你可以用你的日志测试它:

public function newOrderToCRM($route = false, $order_info = false, $order_id = false){
    $this->log->write('Route: ' . $route);
    $this->log->write('Order Info: ');
    $this->log->write($order_info);
    $this->log->write('Order ID: ' . $order_id);
}

下订单,然后检查您的错误日志,这是我的结果:

2018-01-05 17:04:17 - 路线:结帐/订单/添加订单

2018-01-05 17:04:17 - 订单信息:2018-01-05 17:04:17 - 数组(数组内的订单信息)

2018-01-05 17:04:17 - 订单 ID:130

于 2018-01-05T16:12:01.013 回答