Question

Je suis en train de créer un lien pour supprimer un élément de la liste si elle est là. L'URL est de retour / liste / index / au lieu de supprimer l'URL correcte qui de ce que j'ai vu en ligne devrait être / liste / index / supprimer / article / [ID]. Essayer cette URL ne fonctionne pas manuellement. C'est ma façon d'obtenir l'URL de supprimer:

$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
Était-ce utile?

La solution

Tout d'abord, un aperçu de la façon dont fonctionnent listes:

  1. Chaque liste est stockée dans la base de données avec son propre ID
  2. Chaque produit ajouté à une liste est attribué un wishlist_item_id
  3. Cet ID n'est pas le même que le product_id

Pour cette raison, vous ne pouvez pas passer seulement dans un ID de produit à l'URL de supprimer parce qu'il est en fait référence à la wishlist_item_id du produit.

Ceci explique pourquoi vous obtenez une URL vide ( « / liste / index / supprimer »), parce que quand vous passez dans le produit, il n'a pas le wishlist_item_id nécessaire, vous devez récupérer cela d'une manière différente.

Pour contourner ce problème, il existe une méthode en Mage_Wishlist_Model_Item vous pouvez utiliser pour obtenir un article produit par liste 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);

Ou le chemin le plus court:

    $_wishlistItem = Mage::getModel('wishlist/item')->loadByProductWishlist(
        $this->helper('wishlist')->getWishlist()->getId(),
        $_product->getId(),
        $_product->getStoreId()
    );
    $_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_wishlistItem);

Ce code a été testé dans des blocs de type Mage_Catalog_Block_Product_List et Mage_Catalog_Block_Product_View

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top