현재 장바구니에있는 모든 항목을 가져 오는 방법은 무엇입니까?


답변:


61
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
    $productName = $item->getProduct()->getName();
    $productPrice = $item->getProduct()->getPrice();
}

$cart당신 카트 항목의 모든 모음을 가지고 당신이 제품 ID를 얻으려면, 당신은 foreach 루프를 사용에서 얻을 수있는 이름


6
작동하지만 구성 가능한 제품에 속하는 제품을 포함한 모든 제품이 표시됩니다. 사람을 제외한 모든 제품을 표시하려면 난 당신이 getAllVisibleItems ()를 사용해야합니다 언급 한
아틸라 Naghi

이 품목의 양을 표시하는 방법?
Marcos Vinicius 2016 년

getModel을 사용해야합니까? getSingleton을 사용하지 않아야합니까?
Danny Dev Nz

28

다른 해결책을 찾았습니다. 다음 코드는 저에게 효과적입니다.

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
    $productId = $item->getProductId();     
    // Do something more
}

이 품목의 양을 표시하는 방법?
Marcos Vinicius 2016 년

1
루프에 제품을로드 할 때 왜 27 upvotes ....?
sv3n

이것은 끔찍한 성능을 가지고 있습니다. 당신은 이미 통해 사용할 수있을 때 루프에 각 제품을로드하고 있습니다 $item->getProduct()... magento에서-> load () 사용에 대해 생각할 때마다 나쁜 성능을 기대할 수 있습니다. 옵션하지만 실제로 여기에 해당되지 않습니다 ..
OZZIE

1
@ sv3n : 지적 해 주셔서 감사합니다. 코드 수정
Sukeshini

20

다른 방식으로 작동하는 몇 가지 방법이 있습니다.

  1. $items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();

    현재 견적과 관련된 모든 항목이 있는 견적 품목 컬렉션을 반환합니다 .

  2. $items = Mage::getSingleton('checkout/cart')->getItems();

    위의 방법에 대한 바로 가기이지만 따옴표가 없으면 빈 배열을 반환하므로 컬렉션 인스턴스를 가져올 수 없습니다.

  3. $items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();

    항목 콜렉션을로드 한 후 삭제 된 것으로 표시되지 않은 (즉, 현재 요청에서 제거 된) 모든 항목 의 배열 을 리턴합니다.

  4. $items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();

    로드 항목을 수집, 다음 반환 배열 모든 항목의 삭제 된 것으로 표시되지 않은 및 않는 부모가없는을 (즉, 당신이 번들 구성 제품이 아닌 관련 어린이를위한 아이템을 얻을). 각 배열 항목은 장바구니 페이지의 표시된 행에 해당합니다.

가장 적합한 것을 선택하십시오. 대부분의 경우 마지막 방법이 필요하지만 불행히도 Magento는이 방법을 컬렉션이 아닌 배열로만 제공합니다.


그 주 Mage::getSingleton('checkout/cart')->getQuote()Mage::getSingleton('checkout/session')->getQuote()교환 할 수 있습니다.


1
$items =Mage::getSingleton('checkout/session')->getQuote()->getAllItems();

foreach($items as $item) {
    echo 'ID: '.$item->getProductId().'<br />';
    echo 'Name: '.$item->getName().'<br />';
    echo 'Sku: '.$item->getSku().'<br />';
    echo 'Quantity: '.$item->getQty().'<br />';
    echo 'Price: '.$item->getPrice().'<br />';
    echo "<br />";
}

장바구니에 담긴 모든 항목을 가져 오는 가장 좋은 방법


마법사 사용 :: getSingleton ( 'checkout / cart')-> getQuote ()-> getAllItems ();
Aman Srivastava

왜? 차이점이 뭐야?
LM_Fielding

-7

아래 코드는 장바구니 항목을 가져 오는 데 사용됩니다.

$cart = new Mage_Checkout_Model_Cart();

$cart->init();

foreach ($cart->getItems() as $item) {

   // we can wrap our request in this IF statement

   if (!$item->getParentItemId()) {

   }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.