Magento:以编程方式将产品添加到愿望清单中

时间:2015-09-09 08:45:08

标签: magento

我在控制器中添加了以下代码,以编程方式将产品添加到心愿单。但是每当ajax请求进入控制器时,它都会从愿望清单中替换我以前添加的产品,并将新的产品添加到心愿单。

有人可以帮忙解决这个问题。

if (Mage::getSingleton('customer/session')->isLoggedIn()) {
            // Load the customer's data
            $customer = Mage::getSingleton('customer/session')->getCustomer();

            //echo $customer->getName(); // Full Name
            $customerId = $customer->getId(); // First Name


            $wishlist = Mage::getModel('wishlist/wishlist')->loadByCustomer($customerId, true);
            $product = Mage::getModel('catalog/product')->load($productId);
            $result = $wishlist->addNewItem($product);
            $wishlist->save();
            echo "added to wishlist";
        }

1 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

  $product = Mage::getModel('catalog/product')->load($productId);
        if (!$product->getId() || !$product->isVisibleInCatalog()) {
            //$this->__('Cannot specify product.');


        }

        try {
            $requestParams = $this->getRequest()->getParams();

            $buyRequest = new Varien_Object($requestParams=array());

            $result = $wishlist->addNewItem($product, $buyRequest);
            if (is_string($result)) {
                Mage::throwException($result);
            }

            $wishlist->save();

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



            Mage::helper('wishlist')->calculate();

            $message = $this->__('%1$s has been added to your wishlist. Click <a href="%2$s">here</a> to continue shopping.',
                $product->getName(), Mage::helper('core')->escapeUrl($referer));

        } catch (Mage_Core_Exception $e) {
           echo $this->__('An error occurred while adding item to wishlist: %s', $e->getMessage());
        }
        catch (Exception $e) {
            echo ($this->__('An error occurred while adding item to wishlist.'));
        }