ウィッシュリストURLから削除しますか?
-
16-10-2019 - |
質問
ウィッシュリストがある場合、ウィッシュリストからアイテムを削除するリンクを作成しようとしています。 URLは、オンラインで見たものから/wishlist/index/remot/item/[id]である必要がある正しいURLの代わりに、RETURNING/WISHLIST/INDEX/removeです。そのURLを手動で試すことは機能しません。これが削除URLを取得する私の方法です:
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
解決
まず、ウィッシュリストの仕組みの概要:
- 各ウィッシュリストは、独自のIDでデータベースに保存されます
- ウィッシュリストに追加された各製品には割り当てられます
wishlist_item_id
- このIDは、と同じではありません
product_id
このため、製品IDを削除URLに渡すだけではありません。実際には製品を参照しているため wishlist_item_id
.
これは、製品を渡すと不要なため、空白のURL( "/wishlist/index/remove")を取得する理由を説明します。 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
所属していません magento.stackexchange