當客戶第一次輸入地址時,該地址的收貨地址爲和。但數據庫中只有一個條目。因此,如果客戶稍後決定通過編輯現有地址來更改送貨地址,則賬單地址也會發生變化。爲了防止這種情況,我需要在數據庫中有兩個單獨的條目,一個用於帳單地址,另一個用於寄送地址。因此,如何複製客戶地址?
我使用事件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