2010-06-29 16 views

Odpowiedz

16

getTypeInstance pozwala pobrać obiekt, który opisuje typ produktu, gdzie typ jest wewnętrzny typ Magento. Tak więc możesz użyć tej metody, aby określić, czy produkt jest produktem prostym, produktem pakietowanym, produktem konfigurowalnym itp.

Możesz następnie użyć tych obiektów do określenia informacji o produkcie, który jest specyficzny dla danego produktu. Na przykład, jeśli wywołanie tej metody na dołączonym obiektu produktów, dostaniesz obiekt, którego klasa jest

Mage_Bundle_Model_Product_Type 

Ta klasa ma kilka sposobów na to, które zostały zaprojektowane specjalnie do czynienia z wiązanych produktów. Na przykład, masz getWeight metoda

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

Ta metoda ma szczególne przepisy dotyczące ustalania ciężar dołączonego produktu.

Następnie w catalog/product modelu (Mage_Catalog_Model_Product), można zobaczyć, że getWeight tylko owija połączenia z typem za getWeight

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

IS najlepszym przykładem Object Oriented Programming w akcji.

Koniec dnia? Jeśli nie wiesz, dlaczego musisz korzystać z tej metody, nie musisz używać tej metody.

+0

Dzięki Alan, za tak wspaniałe wyjaśnienie. –

4

Wywołanie getTypeInstance zwróci inny obiekt, w zależności od wybranego typu produktu. Na przykład, jeśli wybierzesz produkt pakowany, instancja typu będzie zawierała informacje o produktach w pakiecie, informacje o tym, jak obliczyć masę dynamiczną, itp.

Nie ma nic złego w używaniu tej metody, o ile ma potrzebne dane.

Nadzieję, że pomaga.

Dzięki Joe

Powiązane problemy