Вопрос

Я пытаюсь создать ссылку, чтобы удалить элемент из списка желаний, если он есть. URL -адрес - это возвращение/willlist/index/удалить вместо правильного URL, который, из того, что я видел в Интернете, должен быть/Wishlist/index/remove/item/[id]. Попробовать этот URL -адрес вручную не работает. Это мой способ получить URL удалить:

$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
Это было полезно?

Решение

Во -первых, обзор того, как работают списки желаний:

  1. Каждый список пожеланий хранится в базе данных со своим собственным идентификатором
  2. Каждому продукту, добавленному в список желаний, назначается wishlist_item_id
  3. Этот идентификатор не такой, как product_id

По этой причине вы не можете просто передать идентификатор продукта на URL -адрес, потому что он на самом деле ссылается на продукт wishlist_item_id.

Это объясняет, почему вы получаете пустой URL ("/wiselist/index/удалить"), потому что, когда вы проходите в продукт, у него нет необходимого wishlist_item_id, вы должны получить это по -другому.

Чтобы обойти это, есть метод в Mage_Wishlist_Model_Item Вы можете использовать для получения элемента по желанию по идентификатору продукта:

    /** @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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top