Я использую opencart версии 2.1.0.1 и пытаюсь использовать новую систему уведомлений скрипта.
Обратите внимание, что я просто установил оригинальную версию. Ничего лишнего не добавлено или изменено.
После учебника, найденного здесь: http://isenselabs.com/posts/opencart2-event-system-tutorial
Мне удалось создать новый модуль и успешно установить его.
Я могу подтвердить из базы данных, что она зарегистрировала события, которые я хочу вызвать.
Чтобы дать вам лучшую картину, я создал эти файлы:
Теперь, несмотря на то, что события администратора запускаются без проблем, события заказа в каталоге (на фронте) никогда не запускаются.
При установке функции admin / controller / module / testo.php у меня следующий вызов:
$this->model_extension_event->addEvent('testo', 'post.order.add', 'module/testo/on_order_add');
И, согласно учебнику, функция для запуска должна быть в каталоге / controller / model / testo.php
public function on_order_add($order_id) { .... }
Функция просто записывает order_id в текстовый файл, ничего сложного.
Поэтому, когда я выполняю заказ, функция никогда не запускается.
Я перепробовал большинство крючков для уведомлений о заказах без удачи.
Я что-то пропустил?
Есть что-то, чего я не понимаю?
Пожалуйста, помогите, так как нет абсолютно никакой документации, и я в тупике (пока)
Вы называете это неправильно, ваш путь к файлу каталога должен быть
catalog/controller/module/testo.php
не
catalog/controller/model/testo.php
потому что ваш триггер
$this->model_extension_event->addEvent('testo', 'post.order.add', 'module/testo/on_order_add');
это значит -> Opencart будет искать в каталоге / controller / module / testo.php файл и будет вызывать его функцию on_order_add (), когда сработает триггер ‘post.order.add’ (потому что триггер на стороне каталога будет использовать catalog / * или иначе он будет использовать admin / *), ‘testo’ — это просто часть имени, отмечающая важность.
В вашем случае он выполняет поиск правильно, но у вас нет файла по этому пути, потому что вы добавили файл в
catalog/controller/model/testo.php
поэтому измените структуру папок -> модель на модуль или измените триггер с модуля на модель.
Вы уверены, что запись в текстовый файл работает?
потому что я также пытался получить событие post.order.add на моем Opencart 2.0.3.1, и оно работает нормально.
попробуйте записать в файл журнала
<?php
class ControllerModuleTesto extends Controller
{
public function on_order_add($order_id)
{
$this->log->write("Order Id " . $order_id . " was created.");
}
}
?>
и проверьте журналы в backend-> Tools-> Error Logs