我在prestashop中创建了一个新模块。在这里,我已经覆盖了产品类的一些核心功能。
我的覆盖文件位于以下位置: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 .
我该如何解决这个问题
答案 0 :(得分:1)
这意味着它说的话。您的代码尝试两次声明一个类(使用相同的),因此存在冲突。
我也不明白为什么你的班级被命名为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选项更好,因为它更快(不检查文件系统)