現在、カート内のすべてのアイテムを取得する方法は?


回答:


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

このアイテムの数量を表示するには?
マルコスビニ

getModelを使用する必要がありますか?getSingletonを使用してはいけませんか?
ダニーDev Nz

28

別の解決策を見つけました。次のコードは私のために機能します。

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

このアイテムの数量を表示するには?
マルコスビニ

1
ループで製品をロードするための27のアップ投票....?
sv3n

これにはひどいパフォーマンスがあります....を介して既に利用可能な場合、各製品をループでロードしています$item->getProduct()...オプションは本当にありますが、ここではそうではありません
。– OZZIE

1
@ sv3n:指摘してくれてありがとう。コードの変更
スケシニ

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

カート内のすべてのアイテムを取得する最良の方法


Mage :: getSingleton( 'checkout / cart')-> getQuote()-> getAllItems();を使用します。
アマンスリバスタヴァ

どうして?違いは何ですか?
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.