Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 超控Prestashop 1.6.1.4_Php_Web_Module_Overriding_Prestashop - Fatal编程技术网

Php 超控Prestashop 1.6.1.4

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

我正在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->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转到后端,在
高级参数->性能中
确保
禁用覆盖
设置为
。此文件的确切位置是哪里?你能粘贴整个文件吗?