循环浏览购物车项目并返回自己的ID

时间:2015-04-01 04:44:18

标签: javascript json magento php

我想循环考虑添加到购物车中的所有商品并将其返回给自己的ID。

UPDATE1 :我已经更新了这样的方法

   public function formatPrice($price)
    {
        $productId=""; // an iterate here
        $cart = Mage::getModel('checkout/cart')->getQuote();

            foreach ($cart->getAllItems() as $item) {
                 $productId = $item->getProduct()->getId();
                 $productPrice = $item->getProduct()->getFinalPrice();
            }


        return 'ID: '.$productId;


    }

现在它返回一行中的所有内容因此我得到了这样的结果,我应该使用","分裂他们? enter image description here

P.S:我编辑的文件是\ app \ code \ core \ Mage \ Checkout \ Helper

下的 Data.php

我假设第一个产品的ID是471186而第二个应该是463089,我需要另一个foreach循环吗?

UPDATE2:即使我拆分它,它也会显示为471186,463089 但我希望它根据当前的产品显示,我认为我需要别的东西,magento库是否提供了类似的方法?

UPDATE3:我见过你的最新方法,它将变量存储在数组中并返回它。一些修改取决于你的代码我有:

 $productId =array();
 $cart = Mage::getModel('checkout/cart')->getQuote();
    foreach($cart->getAllItems() as $item) {
 $productId[]= $item->getProduct()->getId();     
  }

    $productId =array_filter($productId);
        //remove empty array 
        foreach($productId as $id){
        return $id; //return $productId;
        }

如果我使用 return $ productId ,它会给我"数组"作为结果的数据类型没有用,我尝试打印出$ id,它只提供第一个产品ID。 我会在这种情况下使用print_r,但似乎不允许我这样做。

UPDATE4:我尝试了内部for循环,并假设它将循环并显示价格,直到它的值小于$ index,即0表示null。

所以我会像这样重新考虑我的代码:

    $productId =array();
    $cart = Mage::getModel('checkout/cart')->getQuote();

foreach($cart->getAllItems() as $item) {
     $productId['id']= $item->getProduct()->getId();  
     $productId['price'] = $item->getProduct()->getFinalPrice();   
      }

        $productId =array_filter($productId);
        for($index=0; $index<count($productId); $index++){ 
  return $productId[$index]['price']; //cannot use echo, printf and print_r
            }

但它只返回null,购物车上没有显示任何内容。     enter image description here

1 个答案:

答案 0 :(得分:3)

在一个函数中,您只能返回一个值。 您应该连接每次迭代的结果,然后返回

$productId= "";
foreach($cart->getAllItems() as $item) {
 $productId.= $item->getProduct()->getId();
 $productPrice = $item->getProduct()->getFinalPrice();
  }
return 'ID: '.$productId;

或使用数组

$productId =array();
foreach($cart->getAllItems() as $item) {
     $productId['id']= $item->getProduct()->getId();  
     $productId['price'] = $item->getProduct()->getFinalPrice();   
      }
$productId =array_filter($productId);
//remove empty array 
for($index=0; $index<count($productId); $index++){ 
 echo $productId[$index]['id'];
 echo $productId[$index]['price'];
}