当客户第一次输入地址时,该地址的收货地址为和。但数据库中只有一个条目。因此,如果客户稍后决定通过编辑现有地址来更改送货地址,则账单地址也会发生变化。为了防止这种情况,我需要在数据库中有两个单独的条目,一个用于帐单地址,另一个用于寄送地址。因此,如何复制客户地址?
我使用事件customer_address_save_after
写了一个事件观察者来检查默认账单地址的条目是否与默认送货地址的条目相同。如果是,则将该地址的副本保存为新的送货地址。好吧,至少这是想法,
public function customerAddressSaveAfter($observer)
{
$session = Mage::getSingleton('customer/session');
if ($session->getCustomer()->getDefaultBilling() ==
$session->getCustomer()->getDefaultShipping())
{
$address = $observer->getCustomerAddress();
$address->unsAddressId()
->unsAddressType();
Mage::getModel('customer/address')
->setData($address->getData())
->setIsDefaultShipping('1')
->setSaveInAddressBook('1')
->save();
}
return $this;
}
但在运行代码似乎导致无限循环,直到内存被耗尽。我究竟做错了什么?
我不知道为什么你担心这一点。 Magento能够保存多个地址。 – pspahn 2013-02-08 22:15:46