我想循环考虑添加到购物车中的所有商品并将其返回给自己的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:我编辑的文件是\ 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,购物车上没有显示任何内容。
答案 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'];
}