2010-06-29 48 views

回答

16

的getTypeInstance可以檢索描述產品,其中型號爲內部Magento的類型的類型的對象。因此,您可以使用此方法來確定產品是簡單產品,捆綁產品,可配置產品等。

然後,您可以使用這些對象來確定特定於其類型的產品的信息。例如,如果你調用這個方法的捆綁產品對象上,你會得到一個對象,它的類是

Mage_Bundle_Model_Product_Type 

這個類有一些它的方法,這是專門用來對付捆綁產品。例如,你有getWeight方法

public function getWeight($product = null) 
{ 
    if ($this->getProduct($product)->getData('weight_type')) { 
     return $this->getProduct($product)->getData('weight'); 
    } else { 
     $weight = 0; 

     if ($this->getProduct($product)->hasCustomOptions()) { 
      $customOption = $this->getProduct($product)->getCustomOption('bundle_selection_ids'); 
      $selectionIds = unserialize($customOption->getValue()); 
      $selections = $this->getSelectionsByIds($selectionIds, $product); 
      foreach ($selections->getItems() as $selection) { 
       $weight += $selection->getWeight(); 
      } 
     } 
     return $weight; 
    } 
} 

該方法具有用於確定捆綁產品的重量的特定規則。

然後,在catalog/product模型(Mage_Catalog_Model_Product),你可以看到getWeight只是包裝了一個調用類型的getWeight

public function getWeight() 
{ 
    return $this->getTypeInstance(true)->getWeight($this); 
} 

的是在行動面向對象編程的一個很好的例子。

那麼,今天結束了嗎?如果您不知道爲什麼需要使用此方法,則不需要使用此方法。

+0

感謝艾倫,爲了這樣一個精彩的解釋。 – 2010-06-30 04:38:19

4

getTypeInstance調用將返回一個不同的對象,具體取決於您選擇的產品類型。例如,如果您選擇捆綁產品,則類型實例將包含關於捆綁產品的信息,關於如何計算動態重量的信息等。

使用此方法沒有任何問題,只要它有你需要的數據。

希望有所幫助。

謝謝, 喬