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

时间:2019-01-31 20:51:41

标签: php prestashop prestashop-1.7

在PrestaShop(具体是v1.7.5)中,一个can通过调用获得模块类的instance

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

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

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

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

2 个答案:

答案 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');
    }
}