Magento:产品从购物车转移到愿望清单

时间:2014-08-06 11:01:06

标签: php magento shopping-cart mage

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

3 个答案:

答案 0 :(得分:4)

您可以使用以下活动

       <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());
    }


}

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

使用事件“wishlist_add_product”。

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

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