Удалить из URL -адреса WishList?
-
16-10-2019 - |
Вопрос
Я пытаюсь создать ссылку, чтобы удалить элемент из списка желаний, если он есть. URL -адрес - это возвращение/willlist/index/удалить вместо правильного URL, который, из того, что я видел в Интернете, должен быть/Wishlist/index/remove/item/[id]. Попробовать этот URL -адрес вручную не работает. Это мой способ получить URL удалить:
$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
Решение
Во -первых, обзор того, как работают списки желаний:
- Каждый список пожеланий хранится в базе данных со своим собственным идентификатором
- Каждому продукту, добавленному в список желаний, назначается
wishlist_item_id
- Этот идентификатор не такой, как
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