在PrestaShop(具体是v1.7.5)中,一个can通过调用获得模块类的instance
$module = Module::getInstanceByName('theModuleName');
在自定义模块的控制器中。
'theModuleName'
是否可以通过其他设置或变量使用,还是需要进行硬编码?
它也应该用作getModuleLink()
的第一个参数。
答案 0 :(得分:1)
您可以通过以下方式访问模块名称(以及模块类中的其余名称):
$theModuleName = $this->module->name;
以Prestashop核心模块“ Cronjobs”为例,您还可以像这样在前端控制器中运行模块方法:
class CronjobsCallbackModuleFrontController extends ModuleFrontController
{
public function postProcess()
{
$this->module->sendCallback();
die;
}
}
答案 1 :(得分:0)
如果您正在ProductListingFrontController的子级中工作,则未定义此->模块。 如果使用getInstanceByName调用模块,则会获得一个实例,以便以后使用。字符串方式在列表控制器中不起作用。
class mymoduleMyControllerModuleFrontController extends ProductListingFrontControllerCore
{
public function init()
{
parent::init();
$this -> module = Module::getInstanceByName('mymodule');
}
}