【问题标题】:loop through the cart items and return it's own ID遍历购物车项目并返回它自己的 ID
【发布时间】:2015-04-01 04:44:18
【问题描述】:

我想循环考虑添加到购物车中的所有商品并返回它自己的 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;


    }

现在它返回一行中的所有内容,因此我的结果是这样的,我应该使用“,”来拆分它们吗?

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

我假设第一个产品的 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,购物车上没有任何显示。

【问题讨论】:

    标签: javascript json magento php


    【解决方案1】:

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

    $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'];
    }
    

    【讨论】:

    • 谢谢,但我还没有解决它,但我已经更新了我的问题,请看看:)
    • @anson920520 $productId.= $item-&gt;getProduct()-&gt;getId(); 点(连接)..你错过了
    • 拆分它们并使用$myArray = explode(',', $myString);
    • 即使我拆分它,它仍然不是我要寻找的结果
    • @anson920520 存储到数组并执行 foreach
    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多