In Magento 2 we can get Customer’s Default billing and Shipping address by customer id using below code snippet,
Using the Block file get the customer’s default billing and shipping address,
<?php namespace Rbj\Customer\Block; class CustomerAddressById extends \Magento\Framework\View\Element\Template { public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Customer\Api\AccountManagementInterface $accountManagement, \Magento\Customer\Model\Address\Config $addressConfig, \Magento\Customer\Model\Address\Mapper $addressMapper, \Magento\Framework\App\Http\Context $httpContext, array $data = [] ) { $this->accountManagement = $accountManagement; $this->_addressConfig = $addressConfig; $this->addressMapper = $addressMapper; parent::__construct($context, $data); } /** * $customerId */ public function getDefaultShippingAddress($customerId) { try { $address = $this->accountManagement->getDefaultBillingAddress($customerId); } catch (NoSuchEntityException $e) { return __('You have not set a default shipping address.'); } return $address; } /** * $customerId */ public function getDefaultBillingAddress($customerId) { try { $address = $this->accountManagement->getDefaultBillingAddress($customerId); } catch (NoSuchEntityException $e) { return __('You have not set a default billing address.'); } return $address; } /* Html Format */ public function getDefaultShippingAddressHtml($address) { if ($address) { return $this->_getAddressHtml($address); } else { return __('You have not set a default Shipping address.'); } } /* Html Format */ public function getDefaultBillingAddressHtml($address) { if ($address) { return $this->_getAddressHtml($address); } else { return __('You have not set a default billing address.'); } } /** * Render an address as HTML and return the result * * @param AddressInterface $address * @return string */ protected function _getAddressHtml($address) { /** @var \Magento\Customer\Block\Address\Renderer\RendererInterface $renderer */ $renderer = $this->_addressConfig->getFormatByCode('html')->getRenderer(); return $renderer->renderArray($this->addressMapper->toFlatArray($address)); } }
Call the required function in the template file,
<?php $customerId = 1; $shippingAddress = $block->getDefaultShippingAddress($customerId); //echo "<pre>";print_r($shippingAddress->__toArray()); $billingAddress = $block->getDefaultBillingAddress($customerId); //echo "<pre>";print_r($billingAddress->__toArray()); echo $block->getDefaultShippingAddressHtml($shippingAddress); echo $block->getDefaultBillingAddressHtml($billingAddress); ?>