2

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

 $recordedAddresses = array();
    foreach ($customer->getAddresses() as $address)
     {
        $recordedAddresses = $address->toArray();
     }

如上所示,我已经收集了地址的集合,我只想按 id 删除它们。奇怪的是,我没有找到示例,而是使用 API。有人可以帮忙吗?

4

2 回答 2

5

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

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

然后删除它:

$address->delete();

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

于 2013-03-11T15:37:19.393 回答
5

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

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

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

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

于 2015-12-21T20:58:42.700 回答