Câu trả lời:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach ($cart->getAllItems() as $item) {
$productName = $item->getProduct()->getName();
$productPrice = $item->getProduct()->getPrice();
}
trong $cart
bạn có tất cả bộ sưu tập mục giỏ hàng và nếu bạn muốn lấy id sản phẩm, tên bạn có thể nhận được từ việc sử dụng vòng lặp foreach
Tôi tìm thấy một giải pháp khác. Các mã sau đây làm việc cho tôi.
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
$productId = $item->getProductId();
// Do something more
}
$item->getProduct()
... Mỗi khi bạn nghĩ về việc sử dụng -> load () trong magento, bạn có thể tin tưởng vào hiệu suất kém, đôi khi không có bất kỳ sản phẩm nào khác tùy chọn thực sự nhưng đây không phải là trường hợp ở đây ..
Có một số phương pháp hoạt động theo một cách khác nhau:
$items = Mage::getSingleton('checkout/cart')->getQuote()->getItemsCollection();
Trả về một bộ sưu tập mục trích dẫn với tất cả các mục liên quan đến báo giá hiện tại.
$items = Mage::getSingleton('checkout/cart')->getItems();
Đây là một lối tắt cho phương thức trên, nhưng nếu không có trích dẫn, nó sẽ trả về một mảng trống, vì vậy bạn không thể dựa vào việc lấy một thể hiện của bộ sưu tập.
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllItems();
Tải bộ sưu tập mục, sau đó trả về một mảng của tất cả các mục không được đánh dấu là đã xóa (nghĩa là đã bị xóa trong yêu cầu hiện tại)
$items = Mage::getSingleton('checkout/cart')->getQuote()->getAllVisibleItems();
Tải bộ sưu tập mục, sau đó trả về một mảng của tất cả các mục không được đánh dấu là đã xóa VÀ không có cha mẹ (nghĩa là bạn nhận được các mục cho các sản phẩm được đóng gói và có thể định cấu hình nhưng không phải là con liên quan của chúng). Mỗi mục mảng tương ứng với một hàng được hiển thị trong trang giỏ hàng.
Chọn những gì phù hợp với nhu cầu của bạn tốt nhất. Trong hầu hết các trường hợp, phương thức cuối cùng là những gì bạn cần, nhưng thật không may Magento chỉ cung cấp nó dưới dạng mảng chứ không phải là bộ sưu tập.
Lưu ý rằng Mage::getSingleton('checkout/cart')->getQuote()
và Mage::getSingleton('checkout/session')->getQuote()
có thể hoán đổi cho nhau.
$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 />";
}
cách tốt nhất để có được tất cả các mặt hàng trong giỏ hàng
Mã dưới đây được sử dụng để nhận các mặt hàng giỏ hàng
$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()) {
}
}