質問

ウィッシュリストがある場合、ウィッシュリストからアイテムを削除するリンクを作成しようとしています。 URLは、オンラインで見たものから/wishlist/index/remot/item/[id]である必要がある正しいURLの代わりに、RETURNING/WISHLIST/INDEX/removeです。その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/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_ListMage_Catalog_Block_Product_View

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top