Как обрабатывать событие в Opencart?

Я не могу понять систему событий Opencart. Например, я хочу отправить заказ во внешнюю CRM, у которой есть собственный API. Я прописал в файле /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("[email protected]","Hello from OpenCart Event",$orderID);
    }    
}

Затем я размещаю тестовый заказ и получаю следующее электронное письмо: Содержимое электронной почты

Но почему я получил это? Я жду идентификатор заказа, но не путь к методу, который я использовал. Где моя ошибка? Помоги мне, пожалуйста.


person Mykola Petiukh    schedule 18.06.2017    source источник


Ответы (2)


Вам придется поискать order_id в $this->request, но я уверен, что он где-то там есть. Он не будет передан в качестве параметра системой событий.

person Scott C Wilson    schedule 19.06.2017

Опенкарт 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 - Маршрут: checkout/order/addOrder

2018-01-05 17:04:17 - Информация о заказе: 2018-01-05 17:04:17 - Массив (информация о заказе внутри массива)

2018-01-05 17:04:17 - Код заказа: 130

person DigitCart    schedule 05.01.2018