我在prestashop中创建了一个新模块。在这里,我过度介绍了产品类的一些核心功能。
我的 overrite 文件已放置在以下位置:prestashop/modules/mymodule/override/
当我安装模块时,我收到以下错误:
Cannot redeclare class ProductOverrideOriginal in /var/www/html/htdocs/prestashop/modules/sharesoft_relatedproducts/sharesoft_relatedproducts.php(96) : eval()'d code on line 2
[PrestaShop] Fatal error in module sharesoft_relatedproducts.php(96) : eval()'d :
Cannot redeclare class ProductOverrideOriginal .
我该如何解决这个问题
它的意思就是它所说的。您的代码尝试声明一个类两次(使用相同的),因此存在冲突。
我也不明白为什么你的类被命名为ProductOverrideOriginal
.所有 Prestashop 覆盖必须覆盖原始 PrestaShop 类,例如
class Product extends ProductCore { ...
从错误消息中,我假设您试图包含被覆盖的类
require('/override/sharesoft_relatedproducts.php');
但是模块文件夹中的所有文件
prestashop/modules/mymodule/override/
自动复制到
prestashop/override/
在模块安装期间。我的猜测是,您的覆盖类文件被复制到那里并加载,但您也尝试将其再次包含在模块中,这会给您错误(尝试声明两次)。
此外,请确保使用以下语句:
require_once('myfile.php');
或
if (!class_exists('MyFile'))
require_once('myfile.php');
以确保同一类不会声明两次。seconde 选项更好,因为它更快(不检查文件系统)