Получите все платежные адреса программно


Я хотел бы получить все адреса доставки клиентов, чтобы указать возможность выбора доставки на самой странице просмотра продукта.

Я создал блок, который будет отображаться на странице просмотра продукта. И у меня есть ниже фрагмент кода.

В нем указан весь адрес, включая адрес для выставления счетов.

if(Mage::getSingleton('customer/session')->isLoggedIn()) {
    $customerData = Mage::getSingleton('customer/session')->getCustomer();

    $address = Mage::getModel('customer/address')->load($customerData->getId());


    echo '<pre>'; print_r($address); echo '</pre>';
}

Как получить только адрес доставки в magento?

Author: Butterfly, 2016-03-17

5 answers

У клиента не всегда будет сохранен адрес доставки по умолчанию, однако, если он это сделает, вы можете получить его следующим образом:

$addressId = Mage::getSingleton('customer/session')->getCustomer()->getDefaultShipping();
if ($addressId){
    $address = Mage::getModel('customer/address')->load($addressId);
    $address->getData();
}

Вам просто не хватает getDefaultShipping()

 3
Author: JoshCarter, 2018-02-16 06:35:56

Это работает на меня.

Информация об адресе хранится в файле Mage_Customer_Model_Customer, поэтому вы должны иметь возможность создать его экземпляр с идентификатором клиента.

$customer = Mage::getModel('customer/customer')->load($customerId);

Затем, в зависимости от типа адреса, который вы ищете, вы должны иметь возможность вызвать одну из следующих функций.

Основной адрес Для Выставления Счетов: $model->getPrimaryBillingAddress();

Основной адрес Доставки: $model->getPrimaryShippingAddress();

Общий выбор адреса: $model->getAddressItemById();

Счастливого Кодирования. :)

 1
Author: Ajay Patel, 2016-03-17 09:04:01
$addressesCollection = Mage::getResourceModel('customer/address_collection');
  $addressesCollection->addAttributeToSelect('*');
/* for particular address 
$addressesCollection->addFieldToFilter('id','12'); */

foreach ($addressesCollection as $address) {
  echo "<pre>"; 
  print_r($address->getData());
}
 1
Author: Maitri Infosys, 2016-03-17 09:11:44

Используйте приведенный ниже код:

if(Mage::getSingleton('customer/session')->isLoggedIn()) {
    $customerData = Mage::getSingleton('customer/session')->getCustomer();

  foreach ($customerData->getAddresses() as $address) {    
        echo $address->getId();
  }

}
 0
Author: Prashant Valanda, 2016-03-17 08:56:22

@недопустимо в соответствии с Magento, у клиента есть только 1 адрес выставления счетов и 1 адрес доставки в качестве адреса по умолчанию, а все остальные адреса, добавленные клиентом или администратором, устанавливаются в качестве дополнительного адреса клиента.

Как вы указали How to get only shipping address in magento? в своем вопросе, я думал, что у вас есть только 1 адрес доставки, который вы используете:

$customer=Маг::getModel('клиент/клиент')->загрузить(104);

$по умолчанию = $клиент->getdefaultshipping();

И если вы хотите показать все дополнительные адреса, которые вы можете получить, используя:

$дополнительно = $клиент->получить дополнительные адреса();

Для каждого ($дополнительно как $добавить){

Zend_Debug::dump($add->getData(), 'Additional');

}

Посмотрите и дайте мне знать, если у вас возникнут какие-либо вопросы.

 0
Author: Jayesh Patel, 2020-06-15 08:30:17