下面是根据the developper documentation编写的最小Prestashop 1.7模块,有一个(不是)微妙的变化:install()
函数将始终返回false
。
据我了解,模块安装应该失败,对吗?但是,尽管Prestashop后台显示了错误通知,但此后仍可以在模块管理器中找到该模块。
这是预期的,还是我错过了代码中的一些小技巧,或者这可能是我的PS安装的配置错误,还是一个错误?
<?php
// check if we're in PS or exit to prevent malicious direct load of the module
if (!defined('_PS_VERSION_'))
exit;
class FooBar extends Module
{
public function __construct()
{
$this->name = 'foobar';
$this->tab = 'content_management';
$this->version = '1.0.0';
$this->author = 'foo';
$this->need_instance = 0;
$this->ps_versions_compliancy = array('min' => 1.7, 'max' => _PS_VERSION_);
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('Foo Bar');
$this->description = $this->l('Whatever');
}
public function install()
{
if (!parent::install())
return false;
return false;
}
public function uninstall()
{
if (!parent::uninstall())
return false;
return true;
}
}
FWIW,我用PrestaShop automatic module generator创建的模块得到了相同的结果。此外,还会创建SQL表(如果有)。