我在创建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并查看它是否不能为您解决问题。

09-20 23:43