提交1个订单的不同尺寸和颜色的多种产品

时间:2014-03-07 22:59:50

标签: magento

我希望制作一种提供多种尺寸和颜色的产品,并允许客户在一个页面上选择不同的尺寸和颜色(以及每种颜色的数量)并提交以便一次性添加多种变化

示例:客户想订购

10 Small Black shirts
10 Medium Black shirts
20 Large Black shirts
5 Small White shirts
5 Medium White shirts
10 Large Black shirts

他们在“产品视图”页面的网格视图中输入数字,然后点击提交一次,一次将60个产品添加到他们的购物车

我已经查找过已经为购买或免费创建的附加组件和模组,但找不到任何附件和模组。

1 个答案:

答案 0 :(得分:0)

我编写了这样一个主题。我这样做的方式是使用简单的产品。按照您的建议构建一个页面,其中包含一个HTML表单,供用户指示哪个product_id和数量,然后将该表单提交给{product_id:qty}对的JSON POST到自定义控制器,然后可以恢复product_id =&gt ;来自POST的qty对然后遍历$ cart-> addProduct($ product,$ request);对于POST中的每个对象。

因此,在自定义控制器中,您可以从

中获取$product_id=>$qty数组
$lolo_skusToAdd = $this->getRequest()->getParam('skuJson',false);
$testArray = json_decode($lolo_skusToAdd, true);

//...

  foreach($testArray as $sku=>$qty){
    //Mage_Checkout_Model_Cart->addProduct() wants quantity as a Varien Object
    $request = new Varien_Object(array('qty' => $qty));

    //...    

    $eventArgs = array(
                 'product' => $product,
                 'qty' => $qty,
                 'additional_ids' => array(),
                 'request' => $this->getRequest(),
             'response' => $this->getResponse(),
                 ); 

    Mage::dispatchEvent('checkout_cart_before_add', $eventArgs);

    try{

        $cart->addProduct($product,$request);
        Mage::dispatchEvent('checkout_cart_after_add', $eventArgs);

        //...

我留下了很多代码。我的控制器有点乱,实际上专门针对自定义情况:它使用ajax接收POST并返回成功消息或失败消息。

我希望这能给你一些正确方向的指示。如果你这样做,你应该阅读正常的添加到购物车控制器,看看'默认Magento'如何将产品添加到购物车并模仿你的自定义控制器,这样你就可以包括所有的Mage :: dispatchEvents()和$ cart- > save()和会话消息更新等