获取 PrestaShop 前端控制器中的模块名称

Get name of module in PrestaShop front controller

在 PrestaShop(特别是 v1.7.5)中的一个 get an 模块 class 通过调用

$module = Module::getInstanceByName('theModuleName');

在自定义模块的控制器中。

'theModuleName' 是否可以通过其他设置或变量使用,还是需要硬编码?

它也应该用作 getModuleLink() 的第一个参数。

您可以通过以下方式访问模块名称(以及模块 class 中的其余部分):

$theModuleName = $this->module->name;

以 Prestashop 核心模块 "Cronjobs" 为例,您还可以 运行 前端控制器中的模块方法,如下所示:

class CronjobsCallbackModuleFrontController extends ModuleFrontController
{
    public function postProcess()
    {
        $this->module->sendCallback();
        die;
    }
}

如果您在 ProductListingFrontController 的子项中工作,则此->模块未定义。 如果您使用 getInstanceByName 调用该模块,您将获得一个实例以便稍后使用它。字符串方式在列表控制器中不起作用。

class mymoduleMyControllerModuleFrontController extends ProductListingFrontControllerCore
     {
        public function init()
        {
            parent::init();
    
            $this -> module = Module::getInstanceByName('mymodule');
    }
}