删除magento中的客户地址

Rap*_*aes 2 magento

我需要以编程方式删除客户地址,但我没有找到执行此操作的功能.

 $recordedAddresses = array();
    foreach ($customer->getAddresses() as $address)
     {
        $recordedAddresses = $address->toArray();
     }
Run Code Online (Sandbox Code Playgroud)

我已经拿走了上面显示的地址集合,我只是想通过id删除它们.奇怪的是,我没有找到示例,而是使用API​​.有人可以用这个手牌吗?

小智 5

看看Mage_Customer_AddressController控制器类和deleteAction()方法.基本上你需要的是通过它的id加载地址:

$address = Mage::getModel('customer/address')->load($addressId);

然后删除它:

$address->delete();

delete()是一种可以针对所有模型运​​行的标准方法(请参阅参考资料Mage_Core_Model_Abstract),您也可以设置具有相同结果的_isDeleted标志和调用save().


ver*_*edi 5

$address->delete()在我的案例中使用后,Magento 以某种方式保留了空实体。使用此方法时,帐户上有空地址阻止管理员保存客户表单。

我发现从用户帐户中实际删除地址的唯一方法是将受保护的 $_isDeleted 标志更改为 true:

$address = Mage::getModel('customer/address')->load($addressId); $address->isDeleted(true);

希望它为任何会偶然发现相同 Magento 行为的人节省一些时间。