Magento: товар перемещен из корзины в список желаний

Я пытаюсь поймать событие перемещения элемента корзины в список желаний. Я пробовал события wishlist_product_add и wishlist_product_item. Но они не работают на странице корзины. Я хочу сохранить индивидуальные настройки продукта в списке желаний. Но когда я перемещаю товар из корзины в список желаний, все данные о вариантах теряются.


person Shaheer Ali    schedule 06.08.2014    source источник


Ответы (3)


Вы можете использовать следующее событие

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


}
person Asif hhh    schedule 28.08.2014
comment
Какая функция в наблюдателе списка желаний удаляет товар из списка желаний, если он добавлен в корзину? - person Krrish Raj; 05.12.2015

Предложите вам реализовать систему регистрации событий, чтобы вы могли точно видеть, какие события запускаются.

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

После этого вы сможете увидеть все запущенные события и выбрать лучшее, чтобы наблюдатель мог зацепиться за него.

person edmondscommerce    schedule 06.08.2014

Используйте событие wishlist_add_product.

Ниже приведено «dispatchEvent», которое используется в методе добавления продуктов в список желаний корзины.

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