如何在Opencart中处理事件?

时间:2017-06-18 17:23:09

标签: php opencart opencart2.x opencart2.3 opencart-events

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

empty

接下来,我在 /catalog/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');
    }
}

接下来,我下了测试订单并收到了这封电子邮件: E-mail content

但为什么我这样做?我等待订单识别器,但不是我使用的方法的路径。我的错误在哪里?请帮帮我。

2 个答案:

答案 0 :(得分:0)

您必须在$this->request查看order_id,但我确定它会在某处。它不会被事件系统作为参数传递。

答案 1 :(得分: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 - 路线:结帐/订单/ addOrder

     

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

     

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