如何在magento中从收藏的愿望清单中删除项目

wh6knrhe  于 2022-11-12  发布在  其他
关注(0)|答案(4)|浏览(132)

在Magento中,我想移除或删除当前登录用户的愿望清单项目。目前我通过启用复选框来选择愿望清单项目,然后使用Mage::getModel('wishlist/item')-〉load($id)-〉delete()来删除它们。我使用的代码片段粘贴在下面。当我点击提交按钮时,项目被删除,但效果只有在我再次刷新页面时才能看到。问题是我需要强制刷新页面才能看到删除的项目。有人能给我建议任何合适的解决方案吗?非常感谢。
注:选中复选框后,将为其值字段分配wishlist-item id,如下所示:
值= $item-〉获取愿望清单项目ID()
表单提交后,将执行以下代码

if(isset($_POST['wishlist']))  // wishlist is name of check box.
    {
      $checkboxes = $_POST['wishlist'];
   foreach ($checkboxes as $id):      
      $bulk = $_COOKIE["bulkaction"];
      if($bulk == "Remove"):
      Mage::getModel('wishlist/item')->load($id)->delete();   // $id contains the wishlist item id.
      $url = $this->getBaseUrl().'wishlist';
      header("refresh:0.0000000000001;", $url);
      endif;
  endforeach;
}
kkih6yb8

kkih6yb81#

如果我没理解错的话,你想删除与特定用户相关的所有愿望清单项目?...

$customerId = 1; // Replace with the customer id you are targetting

$itemCollection = Mage::getModel('wishlist/item')->getCollection()
    ->addCustomerIdFilter($customerId);

foreach($itemCollection as $item) {
    $item->delete();
}
z31licg0

z31licg02#

Drew的答案肯定会从数据库中删除项目。但是,如果您想从“当前”集合中删除项目,则应使用Varien_Data_Collection::removeItemByKey()

$items = $this->getItems();
foreach ($items as $key => $item) {
    if ($condition) $items->removeDataByKey($key);
}

但请注意,有时(当在代码中的不同位置单独访问集合时),它可能看起来不起作用。

7kjnsjlb

7kjnsjlb3#

您可以使用

foreach ($items as $key => $item) {
    if ($condition) $items->removeItemByKey($key);
}
wb1gzix0

wb1gzix04#

试试这个,

$collection = $observer->getEvent()->getCollection();
    if (!empty($collection)) {
        foreach ($collection as $k => $product) {
            $collection->removeItemByKey($k);
        }
    } else {
        return $collection;
    }

希望这能帮上忙谢谢。

相关问题