Magento программно создает объект sales / quote_address - PullRequest
3 голосов
/ 05 августа 2010

У меня проблема с созданием и добавлением объектов sales / quote_address в процесс оформления заказа с несколькими рассылками.В настоящее время, когда я создаю новый объект адреса, он просто снова и снова использует один и тот же объект;Таким образом, когда я добавляю элементы к одному адресу, он добавляет их ко всем адресам.В качестве проверки я помещаю цикл for после основного цикла, чтобы отобразить все идентификаторы созданных адресов - он всегда выводит число 3. Когда я пытаюсь динамически изменить идентификатор вновь созданных адресов (раздел с комментариями) они даже не появятся в финале цикла.Мой код выглядит следующим образом:

//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();
}

Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 05 августа 2010

Метод getSingleton всегда возвращает один и тот же экземпляр объекта. Попробуйте изменить этот вызов на getModel и посмотрите, не решит ли он проблему для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...