【问题标题】:Magento: Product Move from cart to WishlistMagento:产品从购物车移动到愿望清单
【发布时间】:2014-08-06 11:01:06
【问题描述】:

我正在尝试捕捉将购物车项目移动到愿望清单的事件。我尝试了wishlist_product_addwishlist_product_item 事件。但它们不适用于购物车页面。我想将产品的自定义选项保存在愿望清单中。但是当我将产品从购物车移动到愿望清单时,所有选项数据都丢失了。

【问题讨论】:

    标签: php magento shopping-cart mage


    【解决方案1】:

    您可以使用以下活动

           <wishlist_item_add_after>
                <observers>
                   <cop_wishlist_price_options>         
                        <class>AAA_Addon_Model_Observer</class>
                        <method>addProductPriceOptionsToWishlist</method>           
                    </cop_wishlist_price_options>
                </observers>
            </wishlist_item_add_after>
    

    在观察者中,您可以访问愿望清单和报价。将数据/选项从报价单复制到愿望清单项目。

    public function addProductPriceOptionsToWishlist($observer){
    
    try {
    
        $wishlist = $observer->getEvent()->getWishlist();   
        $itemId = (int) $this->_getRequest()->getParam('item');
    
        $cart = Mage::getSingleton('checkout/cart');
        $session = Mage::getSingleton('checkout/session');
    
    
            $quote_item = $cart->getQuote()->getItemById($itemId);
            if (!$quote_item) {
                Mage::throwException(
                    Mage::helper('wishlist')->__("Requested cart item doesn't exist")
                );
            }
    
            $productId  = $quote_item->getProductId();
    
        $buyRequest = $quote_item->getBuyRequest();
        $buyRequestData = $buyRequest->getData();
    
    
        if($buyRequestData):
    
        $additional_op = $quote_item->getOptionByCode('additional_options');
        $additional_op = $additional_op->getData();
    
        $wishlist_item = Mage::getModel('wishlist/item')->load($productId,'product_id');
    
    
        //save additonal options to wishlist-options        
        $modelRes_w_item_op = Mage::getModel('wishlist/item_option');
        $modelRes_w_item_op->setWishlistItemId($wishlist_item->getId());
        $modelRes_w_item_op->setProductId($productId);
        $modelRes_w_item_op->setCode('additional_options');
        $modelRes_w_item_op->setValue($additional_op['value']);
        $modelRes_w_item_op->save();
    
        endif;
    
    
        } catch (Mage_Core_Exception $e) {
            Mage::log($e->getMessage());
        } catch (Exception $e) {
            Mage::log($e->getMessage());
        }
    
    
    }
    

    【讨论】:

    • 如果将产品添加到购物车,愿望清单观察者中的哪个功能会从愿望清单中删除产品?
    【解决方案2】:

    建议您实现一个事件记录系统,以便您可以准确地看到正在触发的事件。

    http://inchoo.net/ecommerce/magento/choosing-a-right-event-to-observe/

    然后您将能够看到所有已触发的事件并为您的观察者选择最好的事件来挂钩

    【讨论】:

      【解决方案3】:

      使用事件“wishlist_add_product”。

      以下是“dispatchEvent”,用于将产品添加到购物车愿望清单的方法中。

      Mage::dispatchEvent(
                  'wishlist_add_product',
                  array(
                      'wishlist' => $wishlist,
                      'product' => $product,
                      'item' => $result
                  )
              );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-09
        • 2023-03-10
        相关资源
        最近更新 更多