从愿望清单URL中删除?
-
16-10-2019 - |
题
我正在尝试创建一个链接,以从愿望清单中删除项目。 URL返回/愿望清单/索引/删除而不是正确的URL,我从我在线看到的应该是/wishlist/index/remove/extain/item/[id]。手动尝试该URL行不通。这是我获取删除URL的方式:
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
解决方案
首先,关于愿望清单的工作方式的概述:
- 每个愿望清单都存储在数据库中,上面有自己的ID
- 每个添加到愿望清单中的产品都分配了
wishlist_item_id
- 此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_List
和 Mage_Catalog_Block_Product_View