2010-06-29 5 views

답변

16

getTypeInstance는 유형이 내부 젠토 타입 제품의 종류를 설명하는 객체를 검색 할 수 있습니다. 따라서이 방법을 사용하여 제품이 단순 제품인지 여부, 번들 제품인지, 구성 가능한 제품인지 확인할 수 있습니다.

그런 다음이 개체를 사용하여 해당 유형의 제품에 대한 정보를 확인할 수 있습니다. 당신이 번들 제품 객체에이 메서드를 호출 할 경우 예를 들어, 당신은 누구의 클래스입니다

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

감사합니다. 앨런, 멋진 설명입니다. –

4

getTypeInstance 호출은 선택한 제품 유형에 따라 다른 개체를 반환합니다. 예를 들어 번들 제품을 선택한 경우 유형 인스턴스에 묶음 제품에 대한 정보, 동적 가중치 계산 방법에 대한 정보가 있습니다.

이 방법을 사용하는 데는 문제가 없습니다. 필요한 데이터가 있습니다.

희망이 있습니다.

덕분에, 조

관련 문제