在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;
}
答案 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);
}