我创建了一个模块,它覆盖FrontControllerCore
类以添加额外的Smarty变量。
我遇到的问题是尝试自动加载在我的模块中的控制器中引用的类。该类未加载,我不知道如何将其添加到自动加载器。
答案 0 :(得分:3)
安装模块时,FrontController.php文件应位于: 覆盖\类\控制器\
所以从FrontController.php你可以"包括"手动该文件,如:
require_once(dirname(__FILE__).'/../../../modules/servicecharges/classes/ServiceCharge.php');
此类包含没有自动加载。
答案 1 :(得分:1)
此外,您可以使用这个覆盖Prestashop自动加载的免费小模块。之后,所有模块自定义类都将自动加载。
例句路径: /modules/my_module/libs/classes/MyClass.php
答案 2 :(得分:1)
我已经能够使用Composer的自动加载解决类似的问题。 Way to require an autoload in one file on a Prestashop module?
您可以调用钩子 moduleRoutes ,而不是覆盖控制器(导致与已使用相同覆盖的Prestashop的其他插件或安装发生冲突)。
这样,您可以在控制器之前始终调用自动加载程序:
<?php
public function hookModuleRoutes() {
require_once __DIR__.'/vendor/autoload.php'; // And the autoload here to make our Composer classes available everywhere!
}