Ответы:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
$productName = $item->getProduct()->getName();
$productPrice = $item->getProduct()->getPrice();
}
у $cart
вас есть вся коллекция товаров в корзине, и если вы хотите получить идентификатор продукта, имя, которое вы можете получить с помощью цикла foreach
Я нашел другое решение. Следующий код работает для меня.
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
// Do something more
}
$item->getProduct()
... Каждый раз, когда вы думаете об использовании -> load () в magento, вы можете рассчитывать на плохую производительность, иногда нет других вариант на самом деле, но это не тот случай, здесь ..
Есть несколько методов, которые работают по-другому:
$items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();
Возвращает коллекцию элементов цитаты со всеми элементами, связанными с текущей цитатой.
$items = Mage::getSingleton('checkout/cart')->getItems();
Это ярлык для метода выше, но если нет кавычек, он возвращает пустой массив, поэтому вы не можете рассчитывать на получение экземпляра коллекции.
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
Загружает коллекцию элементов, затем возвращает массив всех элементов, которые не помечены как удаленные (т.е. были удалены в текущем запросе)
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();
Загружает коллекцию элементов, затем возвращает массив всех элементов, которые не помечены как удаленные И не имеют родителя (т.е. вы получаете элементы для связанных и настраиваемых продуктов, но не связанные с ними дочерние элементы). Каждый элемент массива соответствует отображаемой строке на странице корзины.
Выберите то, что соответствует вашим потребностям лучше всего. В большинстве случаев последний метод - это то, что вам нужно, но, к сожалению, Magento предоставляет его только как массив, а не как коллекцию.
Обратите внимание, что Mage::getSingleton('checkout/cart')->getQuote()
и Mage::getSingleton('checkout/session')->getQuote()
являются взаимозаменяемыми.
$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 />";
}
лучший способ получить весь товар в корзину
Ниже приведен код для получения товаров в корзине
$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()) {
}
}