我在创建Sales/Quote_address对象并将其添加到多装运签出过程中遇到问题。目前,每当我创建一个新的address对象时,它只是一遍又一遍地重用同一个对象;因此,当我向一个地址添加项时,它会将它们添加到所有地址。作为检查,我在主循环之后放了一个for循环,以回显创建的地址的所有id-它总是回显数字3。当我尝试动态更改新创建的地址的id(注释掉部分)时,它们甚至根本不会出现在final for循环中。我的代码如下:
//dynamically create the addresses and add them to the shipping information screen
$idCounter = 1;
foreach($dropshippersCombineWProducts as $dropshippersWCProducts) {
$newAddress = null;
$newAddress = Mage::getSingleton('sales/quote_address')->importCustomerAddress($customAddress);
//$idCounter++;
//$newAddress->setId($idCounter);
foreach ($newAddress->getItemsCollection() as $item) {
$item->isDeleted(true);
}
foreach ($dropshippersWCProducts[1] as $_item) {
$newAddress->addItem($_item);
}
$quote->setShippingAddress($newAddress);
$newAddress->collectShippingRates();
}
$addresses = $quote->getAllShippingAddresses();
foreach ($addresses as $address) {
echo $address->getId();
}
任何帮助都将不胜感激。
最佳答案
getSingleton
方法总是返回相同的对象实例。尝试将该调用更改为getModel
并查看它是否不能为您解决问题。