相关issue,我一直在尝试将相关解决方案应用到我的项目中,但是我无法执行
Module::getInstanceByName('modulename');
我甚至无法访问Module
类,这使我很难访问应用程序上下文和我自己的模块上下文
class_exists('Module')
返回false
。
我还提供了模块的目录结构,我试图从中访问Module
。
├── mymodule.php
├── config.xml
└── somedirectory
└── index.php
mymodule.php
跟随模块类guidelines,而index.php
只是php文件,我试图访问其他模块。对我来说最重要的是访问我自己的模块的上下文,以便我可以检索它的版本和其他设置。
我的index.php
testmodule
的示例,此示例适用于1.4
,但我也愿意让它适用于1.5
和1.6
require('../../../config/settings.inc.php');
require('../../../classes/Module.php');
$instance = Module::getInstanceByName('mymodule');
这会崩溃,当我使用
时require('../../../config/settings.inc.php');
require('../../../classes/Module.php');
if (class_exists('Module')) {
echo "class exists";
} else {
echo "class does not exists";
}
输出class does not exists
。
我需要../../../config/settings.inc.php
的原因是为了证明我可以要求一些类并且它有效。我能够访问settings.inc.php
因此相对路径../../../classes/Module.php
的文件存在且包含
...
public static function getInstanceByName($moduleName)
...
Module
类以按照建议here访问特定模块的实例。从自定义模块中的任意文件中加载Prestashop类的正确方法是什么。../../../config/settings.inc.php
导入require
并且它不适用于../../../classes/Module.php
?1.4
有关,但我想知道是否也适用于1.5
和1.6
,我注意到对于那些版本classes/module.php
不存在而是存在classes/module/Module.php
。一般的解决方案将是最好的。答案 0 :(得分:2)
如果您直接致电http://www.example.com/modules/mymodule/somedirectory/index.php
文件(index.php
),则表示您未使用Prestashop内部调度程序。这意味着在执行/config/config.inc.php
脚本时未加载Prestashop。
如果您想加载Prestashop,首先需要加入require('../../../config/config.inc.php');
if (class_exists('Module')) {
echo "class exists";
} else {
echo "class does not exists";
}
:
<VirtualHost>
如果您想使用Prestashop标准Dispatcher流程,则必须创建ModuleFrontController。