Статьи :
Работа с событиями Opencart 2.0
1 сентября 2016, 00:00 |
Одним из нововведений opencart 2.0 стала система событий (эвентов; также, пожалуй, можно называть их и триггерами). Теперь в коде тут и там можно встретить подобные конструкции:
и так далее... Они позволяют расширять функционал опенкарта без модификаций "родного" кода, то есть вносить свои правки, не затрагивая движок системы. Постановка задачиНаучимся работать с событиями opencart на примере модификации кода, относящегося к оформлению заказа. ТеорияОбработка событий выполняется через скрипт system/engine/event.php. Он содержит методы register (добавление события в реестр) и trigger (собственно, запуск события). Все имеющиеся в системе события подгружаются в реестр в корневом файле index.php:
ПрактикаКак мы видим, информация по загружаемым событиям хранится в MySQL таблице event. Поэтому без всяких сложностей добавим туда интересующий нас триггер:
В данном случае при срабатывании события post.order.add будет вызываться контроллер catalog/triggers, а в нем метод add_order_event. Создадим этот файл:
Следует отметить особенность по передаче параметров из вызывающего кода в триггер. В данном случае мы передаем номер заказа (order_id), который, как видно, стоит аргументом в вызываемом методе. Далее мы можем оперировать с полученной переменной как нам угодно. Например, мы можем делать запросы в сторонний сервис через API, посылать уведомления и так далее, и так далее. ВыводыВ данной статье мы разобрали принцип работы с событиями opencart. В целом, их использование не представляет какой-либо сложности: достаточно добавить запись о событии в базу данных и создать соответствующий ему контроллер (или модифицировать существующий). Так что при умелом использовании они представляют собой мощное средство для доработок системы. P.S.Нужно заметить, что события из публичной части и админки работают раздельно. То есть из админки не получится запустить код триггера, находящегося в папке catalog, и наоборот. |