Php 超控Prestashop 1.6.1.4
我正在Prestashop中执行一个模块,需要重写CartCore类中的方法更新。我在文件夹override中创建了一个类(我在modules/name\u of_module/override中也尝试过)Cart extensed CartCore(文件是Cart.php),下面是代码Php 超控Prestashop 1.6.1.4,php,web,module,overriding,prestashop,Php,Web,Module,Overriding,Prestashop,我正在Prestashop中执行一个模块,需要重写CartCore类中的方法更新。我在文件夹override中创建了一个类(我在modules/name\u of_module/override中也尝试过)Cart extensed CartCore(文件是Cart.php),下面是代码 public function update($null_values = false, $hook = true) { if (isset(self::$_nbProducts[$this->i
public function update($null_values = false, $hook = true)
{
if (isset(self::$_nbProducts[$this->id])) {
unset(self::$_nbProducts[$this->id]);
}
if (isset(self::$_totalWeight[$this->id])) {
unset(self::$_totalWeight[$this->id]);
}
$this->_products = null;
$return = parent::update($null_values);
if($hook) Hook::exec('actionCartSave');
return $return;
}
我已经删除了文件cache/class_index.php,并在后台性能中激活了覆盖,但它不起作用。仅当我更改原始Cart类时才有效,但我不想这样做
谢谢 在模块中创建新覆盖时,Prestashop不知道此新文件。删除
/cache/class_index.php
只会强制Prestashop在根/overrides/
文件夹中查找新文件,而不会在模块/modules/your_模块/overrides/
文件夹中查找新文件
您的文件需要放在根/overrides/
文件夹下。此过程在安装模块时自动完成。模块中的每个覆盖文件都放在根/overrides/
文件夹下。如果在模块已安装时创建新的覆盖,则Prestashop不会为您移动它
那么你有两种可能。卸载并安装您的模块。或者将此文件复制到根/overrides/
文件夹中,并删除/cache/class_index.php
文件
还要考虑到Niclas Larsson建议将此文件置于
/overrides/classes/Cart.php
重写类为了覆盖Product类,您的文件需要名为Product.php,并且必须具有一个Product类,然后扩展ProductCore类。
文件可以放在以下任意位置:
/覆盖/classes/Product.php
/modules/my_module/override/classes/Product.php 覆盖文件夹中基于类型(类、控制器、模块等)分隔的文件
因此,我认为您做得不错,但您需要在override中添加文件夹“classes”,并将文件移到其中。我在/override/classes/Cart.php中有Cart.php,但它不起作用。这是我的class_index.php文件:'Cart'=>array('path'=>'override/classes/Cart.php','type'=>'class','override'=>false,),我试图设置为true,但它也不起作用。@Sergiohlone转到后端,在
高级参数->性能中
确保禁用覆盖
设置为否
。此文件的确切位置是哪里?你能粘贴整个文件吗?