2

在 Magento 中,我想删除或删除当前登录用户的愿望清单项目。目前我通过启用复选框来选择愿望清单项目,然后使用 Mage::getModel('wishlist/item')->load($id)->delete() 删除它们。我使用的代码片段粘贴在下面。当我单击提交按钮时,项目会被删除,但只有在我再次刷新页面时才能看到效果。问题是我需要强制刷新页面才能看到删除的项目。任何人都可以建议我任何合适的解决方案。这将不胜感激。

注意:当复选框被选中时,wishlist-item id 被分配给它的值字段:

价值= $item->getWishlistItemId()

表单提交后,执行以下代码

    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;
}  
4

3 回答 3

1

如果我理解正确,您想删除与特定用户关联的所有愿望清单项目吗?...

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

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

foreach($itemCollection as $item) {
    $item->delete();
}
于 2012-08-03T07:07:54.390 回答
0

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

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

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

于 2013-10-22T16:31:35.097 回答
0

您可以使用

foreach ($items as $key => $item) {
    if ($condition) $items->removeItemByKey($key);
}
于 2021-01-28T08:04:08.557 回答