Frage

Ich versuche, einen Link zu erstellen, um ein Element aus der Wunschliste zu entfernen, wenn er dort ist. Die URL kehrt/Wishlist/Index/Entfernen anstelle der richtigen URL zurück, die aus dem, was ich online gesehen habe,/Wunschliste/Index/entfernen/item/[id] sein sollte. Wenn Sie diese URL manuell ausprobieren, funktioniert es nicht. Dies ist meine Art, die URL zu entfernen:

$_wishlistRemoveUrl = $this->helper('wishlist')->getRemoveUrl($_product);
War es hilfreich?

Lösung

Erstens ein Überblick darüber, wie Wishlists funktionieren:

  1. Jede Wunschliste wird in der Datenbank mit einer eigenen ID gespeichert
  2. Jedes Produkt, das einer Wunschliste hinzugefügt wurde, wird a zugewiesen a wishlist_item_id
  3. Diese ID ist nicht dasselbe wie die product_id

Aus diesem Grund können Sie nicht einfach eine Produkt -ID an die Entfernen -URL weitergeben, da sie tatsächlich auf das Produkt verweist wishlist_item_id.

Dies erklärt, warum Sie eine leere URL erhalten ("/Wishlist/Index/entfernen"), denn wenn Sie das Produkt übergeben wishlist_item_id, Sie müssen dies auf andere Weise abrufen.

Um dies zu umgehen, gibt es eine Methode in Mage_Wishlist_Model_Item Sie können eine Wunschliste mit Produkt -ID erhalten:

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

Oder der kürzere Weg:

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

Dieser Code wurde in Typblöcken getestet Mage_Catalog_Block_Product_List und Mage_Catalog_Block_Product_View

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top