Получите все платежные адреса программно
Я хотел бы получить все адреса доставки клиентов, чтобы указать возможность выбора доставки на самой странице просмотра продукта.
Я создал блок, который будет отображаться на странице просмотра продукта. И у меня есть ниже фрагмент кода.
В нем указан весь адрес, включая адрес для выставления счетов.
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?
5 answers
У клиента не всегда будет сохранен адрес доставки по умолчанию, однако, если он это сделает, вы можете получить его следующим образом:
$addressId = Mage::getSingleton('customer/session')->getCustomer()->getDefaultShipping();
if ($addressId){
$address = Mage::getModel('customer/address')->load($addressId);
$address->getData();
}
Вам просто не хватает getDefaultShipping()
Это работает на меня.
Информация об адресе хранится в файле Mage_Customer_Model_Customer, поэтому вы должны иметь возможность создать его экземпляр с идентификатором клиента.
$customer = Mage::getModel('customer/customer')->load($customerId);
Затем, в зависимости от типа адреса, который вы ищете, вы должны иметь возможность вызвать одну из следующих функций.
Основной адрес Для Выставления Счетов: $model->getPrimaryBillingAddress();
Основной адрес Доставки: $model->getPrimaryShippingAddress();
Общий выбор адреса: $model->getAddressItemById();
Счастливого Кодирования. :)
$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());
}
Используйте приведенный ниже код:
if(Mage::getSingleton('customer/session')->isLoggedIn()) {
$customerData = Mage::getSingleton('customer/session')->getCustomer();
foreach ($customerData->getAddresses() as $address) {
echo $address->getId();
}
}
@недопустимо в соответствии с Magento, у клиента есть только 1 адрес выставления счетов и 1 адрес доставки в качестве адреса по умолчанию, а все остальные адреса, добавленные клиентом или администратором, устанавливаются в качестве дополнительного адреса клиента.
Как вы указали How to get only shipping address in magento?
в своем вопросе, я думал, что у вас есть только 1 адрес доставки, который вы используете:
$customer=Маг::getModel('клиент/клиент')->загрузить(104);
$по умолчанию = $клиент->getdefaultshipping();
И если вы хотите показать все дополнительные адреса, которые вы можете получить, используя:
$дополнительно = $клиент->получить дополнительные адреса();
Для каждого ($дополнительно как $добавить){
Zend_Debug::dump($add->getData(), 'Additional');
}
Посмотрите и дайте мне знать, если у вас возникнут какие-либо вопросы.