События в пользовательском модуле opencart 2.3.x не запускаются

Я новичок в разработке модулей Opencart и пытаюсь создать собственный модуль с событиями на OC 2.3.x. Вот код, который я сделал:

class ControllerExtensionModuleFSElias extends Controller
{
    public function install()
    {
        $this->load->model('extension/event');
        $this->model_extension_event->addEvent('fselias', 'admin/model/catalog/product/addProduct/after', 'fselias/events/add_product');
    }

    public function add_product($route, $product_id)
    {
        $this->load->model('sale/order');
        $this->load->model('catalog/product');

        //$product_id - you can get the product id that was recentlt added in this function
        $log = date("F j, Y, g:i a") . ': ' . $route . ': ' . $product_id . PHP_EOL;
        file_put_contents('./products_log_' . date("j.n.Y") . '.txt', $log, FILE_APPEND);
    }
}

Событие регистрируется, но не запускается при добавлении нового продукта, пожалуйста, что я сделал не так?


person Fady Elias    schedule 05.06.2017    source источник


Ответы (1)


Я не уверен, что строка, указанная вами для аргумента 3 (fselias/events/add_product), верна; это должен быть маршрут к контроллеру. Но что вы можете сделать, чтобы отладить это, установить точку останова в system/engine/loader.php, где запускаются события публикации, и посмотреть, что происходит с вашим событием. Если событие не может быть найдено, система автоматически дает сбой - это случилось со мной, и запуск системы в отладчике был единственным способом, которым я мог его отследить.

person Scott C Wilson    schedule 18.06.2017
comment
Не могли бы вы уточнить, как можно увидеть, что происходит с вашим мероприятием? - person aexl; 18.07.2017
comment
Если вы установите точку останова в загрузчике, вы увидите, как обрабатываются события. Например, возможно, ваше событие туда не попадает, или, может быть, оно туда попадает и имеет какую-то ошибку. - person Scott C Wilson; 18.07.2017