2014-04-04 135 views
0

我試圖定製定價/分層定價在Magento CE 1.6.0.0中顯示的方式。無法調用擴展Magento模型內的自定義方法

我跟隨下面的鏈接的第二個職位說明書覆蓋Mage_Catalog_Model_Product_Type_Price

http://www.magentocommerce.com/boards/viewthread/16829/

以下是我的自定義模型類:

class PHC_Price_Model_Price extends Mage_Catalog_Model_Product_Type_Price { 
    public function getPrice() { 
     echo "overridden getPrice method called<br>"; 
    } 

    public function getPHCDisplayPrice($product) { 
     echo "custom price function called<br>"; 
    } 
} 

我能成功請從我的模板文件中調用覆蓋的getPrice()函數,如下所示:

$product = Mage::getModel("catalog/product")->load($_product->entity_id); 
$displayPrice = $product->getPrice(); 

然而,當我嘗試調用我的自定義功能,價格與

$product = Mage::getModel("catalog/product")->load($_product->entity_id); 
$displayPrice = $product->getPHCDisplayPrice(); 

我得到絕對沒有。任何人都可以告訴我我錯過了什麼嗎?

回答

1

你不會很正常地得到結果。如果這有效,我會感到驚訝。

您將覆蓋類Mage_Catalog_Model_Product_Type_Price,但在您的示例中,$product變量是Mage_Catalog_Model_Product的實例。該類沒有方法getPHCDisplayPrice,它調用__call方法並返回null。

您在意外致電getPrice時會得到預期結果。這是因爲在Mage_Catalog_Model_ProductgetPrice方法是這樣的:

public function getPrice() 
{ 
    if ($this->_calculatePrice || !$this->getData('price')) { 
     return $this->getPriceModel()->getPrice($this); 
    } else { 
     return $this->getData('price'); 
    } 
} 

所以,當你調用它,它會調用$this->getPriceModel()->getPrice($this)$this->getPriceModel()返回你的類的實例。

+0

感謝您的解釋 - 很高興瞭解發生了什麼。相反,我能夠通過擴展Mage_Catalog_Model_Product來完成我所需的工作。 – cmpreshn