2014-04-04 99 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