如何从magento中的wishlist集合中删除项目

时间:2012-08-03 05:59:08

标签: magento

在Magento中,我想删除或删除当前登录用户的心愿单项。 目前我通过启用复选框选择心愿单项目,然后使用Mage :: getModel('wishlist / item') - > load($ id) - > delete()删除它们。我使用的代码片段粘贴在下面。单击“提交”按钮时,项目将被删除但效果仅在我再次刷新页面时可见。问题是我需要强行刷新页面以便查看删除的项目。 谁能建议我任何合适的解决方案。这将是值得赞赏的。

注意:选中此复选框后,wishlist-item id将分配给其值字段:

value = $ 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;
}  

3 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

你可以使用

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