我正在尝试创建一个链接,以从愿望清单中删除项目。 URL返回/愿望清单/索引/删除而不是正确的URL,我从我在线看到的应该是/wishlist/index/remove/extain/item/[id]。手动尝试该URL行不通。这是我获取删除URL的方式:

$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
有帮助吗?

解决方案

首先,关于愿望清单的工作方式的概述:

  1. 每个愿望清单都存储在数据库中,上面有自己的ID
  2. 每个添加到愿望清单中的产品都分配了 wishlist_item_id
  3. 此ID与 product_id

因此,您不能仅将产品ID传递给删除URL,因为它实际上是在引用产品的 wishlist_item_id.

这解释了为什么您要获得空白URL(“/wishlist/index/emover”),因为当您传递产品时,它没有必需的 wishlist_item_id, ,您必须以不同的方式检索它。

为了解决这个问题,有一种方法 Mage_Wishlist_Model_Item 您可以使用产品ID来获取愿望清单项目:

    /** @var $_wishlistHelper Mage_Wishlist_Helper_Data */
    $_wishlistHelper = $this->helper('wishlist');

    /** @var $_wishlist Mage_Wishlist_Model_Wishlist */
    $_wishlist = $_wishlistHelper->getWishlist();

    /** @var $_wishlistItem Mage_Wishlist_Model_Item */
    $_wishlistItem = Mage::getModel('wishlist/item');
    $_wishlistItem->loadByProductWishlist(
        $_wishlist->getId(),
        $_product->getId(),
        $this->helper('core')->getStoreId()
    );

    $_wishlistRemoveUrl = $_wishlistHelper->getRemoveUrl($_wishlistItem);

或较短的方式:

    $_wishlistItem = Mage::getModel('wishlist/item')->loadByProductWishlist(
        $this->helper('wishlist')->getWishlist()->getId(),
        $_product->getId(),
        $_product->getStoreId()
    );
    $_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_wishlistItem);

该代码已在类型的块中进行了测试 Mage_Catalog_Block_Product_ListMage_Catalog_Block_Product_View

许可以下: CC-BY-SA归因
scroll top