【问题标题】:Magento - Add array of SKU's to shopping cartMagento - 将 SKU 数组添加到购物车
【发布时间】:2013-01-18 12:04:01
【问题描述】:

我正在为我正在开发的电子商务网站制作按 sku 形式添加产品。 我制作的表单基本上有 2 个字段,“cod”和“qt”。

我已将其传递给此脚本(已编辑):

<?php
    $sku = $_POST['cod'];
    $qty = $_POST['qt'];
    $product = new Mage_Catalog_Model_Product();
    $cart = Mage::getSingleton('checkout/cart');

    $osids = array();

    foreach ($sku as $lol){
        $lolz = Mage::getModel('catalog/product')->loadByAttribute('sku',$lol)->getId();
        array_push($osids, $lolz);

    }
var_dump($osids);

$params = array(
    'qty' => 2,
);
$cart->addProductsByIds($osids, $params);
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);


?>

var_dump 正确显示数组,即。在这种情况下有多个 sku,但 foreach 循环只会将数组中的第一个 sku 添加到购物车中。

知道为什么吗?

我不想在数组中添加所有 sku。

【问题讨论】:

  • 我建议您通过 url 添加产品,这很容易,您无需编写任何代码,只需通过查询字符串传递 sku 和数量,magento 将完成剩下的工作
  • 对一个 SKU 来说可以,但对多个 SKU 就不行了吗?

标签: php zend-framework magento magento-1.7


【解决方案1】:

试试下面的代码:

<?php
    $sku_list = $_POST['cod'];
    $qty = $_POST['qt'];
    $cart = Mage::getSingleton('checkout/cart');

    foreach ($sku_list as $sku){
        $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);
        $cart->addProduct($product, $qty);
    }
    $cart->save();
    Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

【讨论】:

  • 恐怕没用。这次没有产品添加到购物车。在我看来,您在 foreach 循环之前初始化了购物车并在结束时将其保存,这是有道理的,所以我看不出它为什么不起作用。
  • 也许用 $cart->addProductsByIds() 试试运气并传入所有产品 ID 的数组?
  • 太好了,它有效!现在我也需要传递数量,addProductsByIds() 函数是否接受参数?如果是这样,怎么做?找不到有关它的文档。
  • 我对我的原始代码进行了更改,如果你看一下购物车模型,app\code\core\Mage\Checkout\Model\Cart.php 你可以看到函数和参数.在 addProduct() 函数的情况下,它需要 2 个参数 $productInfo 和 $requestInfo,在您的情况下,您只需将产品对象 ($product) 作为 $product 信息和数量 ($qty) 作为请求信息.这应该可以解决问题,如果它不起作用,请告诉我。
  • 感谢上面的代码,帮助我开始了我需要编写的自动添加附加产品模型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多