首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理Opencart中的事件?

如何处理Opencart中的事件?
EN

Stack Overflow用户
提问于 2017-06-18 17:23:08
回答 2查看 1K关注 0票数 0

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

代码语言:javascript
运行
复制
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 Next代码编写了以下内容:

代码语言:javascript
运行
复制
class ControllerExtensionModuleMykmykpetBitrix24 extends Controller{
    public function newOrderToCRM($orderID){
        mail("mykmykpet@mykmykpet.xyz","Hello from OpenCart Event",$orderID);
    }    
}

接下来,我下了测试订单,收到了以下电子邮件:电子邮件内容

但我为什么要这么做?我等待一个订单标识符,而不是我使用的方法的路径。我的错误在哪里?帮帮我求你了。

EN

回答 2

Stack Overflow用户

发布于 2017-06-19 00:01:10

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

票数 0
EN

Stack Overflow用户

发布于 2018-01-05 16:12:01

OpenCart 2.3.0.2

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

代码语言:javascript
运行
复制
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 -订单编号: 130

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44617644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档