Класс модуля автозагрузки в Prestashop

Я создал модуль с переопределением класса FrontControllerCore для добавления дополнительных переменных Smarty.

Проблема, с которой я сталкиваюсь, заключается в попытке автозагрузки класса, на который ссылается контроллер, находящийся в моем модуле. Класс не загружается и я не знаю как добавить его в автозагрузчик.


person kel    schedule 17.03.2015    source источник


Ответы (3)


При установке модуля файл FrontController.php должен находиться в папке: override\classes\controller\

поэтому из FrontController.php вы можете вручную «включить» этот файл, например:

require_once(dirname(__FILE__).'/../../../modules/servicecharges/classes/ServiceCharge.php');

Для таких включений нет автозагрузки.

person PrestaShopDeveloper    schedule 18.03.2015

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

Пример пути: /modules/my_module/libs/classes/MyClass.php

Расширенный API

person Simon Bonjean    schedule 13.04.2016

Мне удалось решить аналогичную проблему с помощью автозагрузки Composer. Способ потребовать автозагрузка одним файлом в модуле Prestashop?

Вместо переопределения контроллера (что приведет к конфликтам с другими плагинами или установками Prestashop, которые уже используют те же переопределения), вы можете вызвать хук moduleRoutes.

Таким образом, вы всегда можете вызывать автозагрузчик перед контроллерами:

<?php

public function hookModuleRoutes() {
  require_once __DIR__.'/vendor/autoload.php'; // And the autoload here to make our Composer classes available everywhere!
}
person Dev_NIX    schedule 28.07.2016
comment
Добро пожаловать в Stack Overflow! Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы у ваших коллег-пользователей представление о том, что это такое и зачем оно там. Всегда цитируйте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или навсегда отключится. Учтите, что возможная причина того, что почему и как удаляются некоторые ответы, — это не более чем ссылка на внешний сайт?. - person ddb; 28.07.2016