2010-06-15 3 views
3

Magento에서 장바구니의 항목 정보를 가져 오거나 가져올 필요가있는 경우 두 가지 방법 중 하나로 할 수 있습니다. 그러면 두 가지 방법으로 쇼핑 할 수 있습니다 배열의 항목 : - :Magento의 장바구니 항목을 가져 오는 두 가지 명령의 차이

,369 -

  1. $cartItems1 = $cart->getQuote()->getAllItems();
  2. $cartItems2 = $cart->getItems()->getData();

그러나 위의 두 가지 방법 중 하나를 사용하기 전에, 당신은 쇼핑 카트 개체를 초기화해야

$cart = new Mage_Checkout_Model_Cart(); 
$cart->init(); 

누구나 가능한 두 가지 옵션이 서로의 차이점을 제공하는지 자세히 설명해주십시오.

Magento에서 더 이상 옵션을 사용할 수 있습니까?

답변

10

장바구니 및 견적 클래스의 코드를 보면 모든 것이 명확 해집니다.

다음은 $ cart-> getItems()에 대한 코드입니다 :

public function getItems() 
{ 
    return $this->getQuote()->getAllVisibleItems(); 
} 

평야와 간단한 - 그것은 바로 견적 객체의 메소드를 호출합니다. 이제 질문은 다음과 같습니다. 의 차이점 getAllVisibleItems()getAllItems()의 차이점은 무엇입니까?

public function getAllItems() 
{ 
    $items = array(); 
    foreach ($this->getItemsCollection() as $item) { 
     if (!$item->isDeleted()) { 
      $items[] = $item; 
     } 
    } 
    return $items; 
} 

public function getAllVisibleItems() 
{ 
    $items = array(); 
    foreach ($this->getItemsCollection() as $item) { 
     if (!$item->isDeleted() && !$item->getParentItemId()) { 
      $items[] = $item; 
     } 
    } 
    return $items; 
} 

유일한 차이점 : getAllVisibleItems()은 각 항목에 대한 추가 검사가 있습니다

!$item->getParentItemId() 

제품 경우 테스트 두 가지 방법의 코드에서

살펴 보자 부모가 있습니다 (즉, 단순한 제품인지 테스트합니다). 따라서이 메소드의 반환 배열은 getAllItems()과 달리 간단한 제품이 누락됩니다.

다른 방법으로 항목을 검색 할 수 있습니까?

하나는 직접 인용 객체에서 제품 회수를 얻을 수있을 것입니다 :

$productCollection = $cart->getQuote()->getItemsCollection(); 
+0

와우, 이렇게 아름다운 답변 정말 감사합니다. 많은 감사합니다. –

+0

당신은 오신 것을 환영합니다. 이 답변이 도움이된다면 동의하십시오. – silvo

+0

게시 된 경우 실제로 더 좋은 답변을 기다리고있었습니다. 그러나 그럼에도 불구하고 나는 당신의 대답을 받아 들였습니다. –

관련 문제