Не применяется MOD в 4.1. Как их писать теперь?

Тема в разделе "Общие вопросы", создана пользователем Delovoy, 11 сен 2025.

  1. World-Web

    World-Web Пользователь

    Сообщения:
    58
    Симпатии:
    11
    Адрес файла который хотите модифицировать где?
     
  2. vrndorog

    vrndorog Пользователь

    Сообщения:
    36
    Симпатии:
    5
    Моя версия, почему не работают модификаторы в Опенкарт 4.1.0.0:

    Если сравнивать с v 4.0.2.3 "Русская сборка" в 4.1.0.0 был существено изменен класс Opencart\System\Engine\Loader.

    Если прежде в event можно было вернуть новый Action, и текущий маршрут не загрузится, то сейчас и метод controller, и model, и другие методы указанного класса при любом раскладе выполнят и event, и целевой маршрут. Поскольку модифицированный файл вызывается именно в event, друг за другом декларируются два класса из одного пространства имен и одним именем. В результате получаем Fatal error.
    А как иначе, если в указаном классе есть это:
    Код:
      if (is_callable($callable)) {
         // Trigger the pre events
         $this->event->trigger('controller/' . $trigger . '/before', [&$route, &$args]);  
    
          $output = $callable(...$args);
               
          // Trigger the post events
          $this->event->trigger('controller/' . $trigger . '/after', [&$route, &$args, &$output]);
           
       }
    Таким образом, создавать модификаторы для контроллеров и методов, которые загружаются через Opencart\System\Engine\Loader ($this->load), не имеет смысла.

    Видимо, выбирая между двух зол, создатели Опенкарт заблудились межуду Событиями и Модификаторами. Если что, я за События.