2016-05-31 120 views
0

我做在的Prestashop模塊,我需要重寫類CartCore的方法更新。我已經在文件夾覆蓋內創建了一個類(我已經在modules/name_of_module/override中嘗試過)Cart擴展了CartCore(該文件是Cart.php),並且我有下一個代碼。覆蓋的Prestashop 1.6.1.4

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; 
} 

我已刪除的文件緩存/ class_index.php,我已經激活了後臺性能的覆蓋,但它不工作。只有當我更改原始購物車類時纔有效,但我不想這樣做。

謝謝!

+0

這是一個文件中哪個具體的位置?你能粘貼整個文件嗎? – joseantgv

回答

1

當您在模塊中創建一個新的覆蓋的Prestashop不知道這個新的文件。刪除/cache/class_index.php,只會迫使的Prestashop尋找新的文件在根文件夾/overrides/但不是在你的模塊/modules/your_module/overrides/文件夾。

您的文件需要root /overrides/文件夾下放置。這個過程在安裝模塊時自動完成。您模塊中的每個覆蓋文件都放在根文件夾/overrides/下。如果您在模塊已安裝的情況下創建新的覆蓋,Prestashop將不會爲您移動它。

你那麼有兩種可能性。卸載並安裝您的模塊。或者將該文件複製到根文件夾/overrides/並刪除文件/cache/class_index.php


還要考慮到尼克拉斯·拉鬆建議把這個文件/overrides/classes/Cart.php下。

+0

我有Cart.php裏面/override/classes/Cart.php但它不起作用。 這是我的class_index.php文件: '車'=> 陣列( '路徑'=> '倍率/類/ Cart.php', '類型'=> '類', '覆蓋'=>假, ), 我試圖穿上真實的,但它也沒有工作。 –

+0

@SergiohLonet轉到您的後端,並在'高級參數 - >性能'確保'Disable overrides'設置爲'No'。 – TheDrot

+0

它被設置爲否。 –

1

Overriding default behaviors

重寫類
爲了覆蓋產品類,你的文件需要被稱爲Product.php,必須配有產品類,然後擴展ProductCore類。

該文件可以被放置在下列位置之一:
/override/classes/Product.php
/modules/my_module/override/classes/Product.php

覆寫文件在文件夾中分離根據它們的類型(類,控制器模塊,..)

因此,我認爲你正在做正確的事情,但你需要添加在重寫的文件夾「類」,並且將文件移到它。