Magento 2 provides some default attributes to show in the customer address book. But, sometimes we need to add additional information/custom attributes in the customer address book. In this case, we can modify the address book. So, in this blog, we will learn how to add a custom customer address attribute in the customer address book.
Step 1.
You must have a custom attribute made.
Then copy book.phtml from vendor/magento/module-customer/view/frontend/templates/address/book.phtml and paste it in app/design/frontend/{Vendor}/{Theme}/Magento_Customer/templates/address/book.phtml
or, You can copy and paste below code.
E.g.:-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** @var \Magento\Customer\Block\Address\Book $block */ ?> <div class="block block-addresses-default"> <div class="block-title"><strong><?= $block->escapeHtml(__('Default Addresses')) ?></strong></div> <div class="block-content"> <?php if ($_pAddsses = $block->getDefaultBilling()) : ?> <div class="box box-address-billing"> <strong class="box-title"> <span><?= $block->escapeHtml(__('Default Billing Address')) ?></span> </strong> <div class="box-content"> <address> <?= $block->getAddressHtml($block->getAddressById($_pAddsses)) ?> </address> </div> <div class="box-actions"> <a class="action edit" href="<?= $block->escapeUrl($block->getAddressEditUrl($_pAddsses)) ?>"> <span><?= $block->escapeHtml(__('Change Billing Address')) ?></span> </a> <form style="margin-top: 10px;" action="<?= $block->escapeUrl($block->getUrl('customer/address/delete', ['id' => $_pAddsses])) ?>"> <?= $block->getBlockHtml('formkey') ?> <button type="submit" class="action delete"> <span><?= $block->escapeHtml(__('Delete Address')) ?></span> </button> </form> </div> </div> <?php else : ?> <div class="box box-billing-address"> <strong class="box-title"><span><?= $block->escapeHtml(__('Default Billing Address')) ?></span></strong> <div class="box-content"> <p><?= $block->escapeHtml(__('You have no default billing address in your address book.')) ?></p> </div> </div> <?php endif ?> <?php if ($_pAddsses = $block->getDefaultShipping()) : ?> <div class="box box-address-shipping"> <strong class="box-title"> <span><?= $block->escapeHtml(__('Default Shipping Address')) ?></span> </strong> <div class="box-content"> <address> <?= $block->getAddressHtml($block->getAddressById($_pAddsses)) ?><br> </address> </div> <div class="box-actions"> <a class="action edit" href="<?= $block->escapeUrl($block->getAddressEditUrl($_pAddsses)) ?>"> <span><?= $block->escapeHtml(__('Change Shipping Address')) ?></span> </a> <form style="margin-top: 10px;" action="<?= $block->escapeUrl($block->getUrl('customer/address/delete', ['id' => $_pAddsses])) ?>"> <?= $block->getBlockHtml('formkey') ?> <button type="submit" class="action delete"> <span><?= $block->escapeHtml(__('Delete Address')) ?></span> </button> </form> </div> </div> <?php else : ?> <div class="box box-shipping-address"> <strong class="box-title"><span><?= $block->escapeHtml(__('Default Shipping Address')) ?></span></strong> <div class="box-content"> <p><?= $block->escapeHtml(__('You have no default shipping address in your address book.')) ?></p> </div> </div> <?php endif ?> </div> </div> <script type="text/x-magento-init"> { ".page-main": { "address": { "deleteAddress": "li.item a[role='delete-address']", "deleteUrlPrefix": "<?= $block->escapeJs($block->escapeUrl($block->getDeleteUrl())) ?>id/", "addAddress": "button[role='add-address']", "addAddressLocation": "<?= $block->escapeJs($block->escapeUrl($block->getAddAddressUrl())) ?>" } } } </script> |
Step 2.
After copy and paste, You have to add the below code on top of the HTML code.
9 10 11 |
<?php $customerAddressEdit = $block->getLayout()->createBlock('Magento\Customer\Block\Address\Edit'); ?> |
Like this,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /** @var \Magento\Customer\Block\Address\Book $block */ ?> <?php $customerAddressEdit = $block->getLayout()->createBlock('Magento\Customer\Block\Address\Edit'); ?> <div class="block block-addresses-default"> <div class="block-title"><strong><?= $block->escapeHtml(__('Default Addresses')) ?></strong></div> <div class="block-content"> <?php if ($_pAddsses = $block->getDefaultBilling()) : ?> <div class="box box-address-billing"> <strong class="box-title"> <span><?= $block->escapeHtml(__('Default Billing Address')) ?></span> </strong> <div class="box-content"> <address> <?= $block->getAddressHtml($block->getAddressById($_pAddsses)) ?> </address> </div> <div class="box-actions"> <a class="action edit" href="<?= $block->escapeUrl($block->getAddressEditUrl($_pAddsses)) ?>"> <span><?= $block->escapeHtml(__('Change Billing Address')) ?></span> </a> <form style="margin-top: 10px;" action="<?= $block->escapeUrl($block->getUrl('customer/address/delete', ['id' => $_pAddsses])) ?>"> <?= $block->getBlockHtml('formkey') ?> <button type="submit" class="action delete"> <span><?= $block->escapeHtml(__('Delete Address')) ?></span> </button> </form> </div> </div> <?php else : ?> <div class="box box-billing-address"> <strong class="box-title"><span><?= $block->escapeHtml(__('Default Billing Address')) ?></span></strong> <div class="box-content"> <p><?= $block->escapeHtml(__('You have no default billing address in your address book.')) ?></p> </div> </div> <?php endif ?> <?php if ($_pAddsses = $block->getDefaultShipping()) : ?> <div class="box box-address-shipping"> <strong class="box-title"> <span><?= $block->escapeHtml(__('Default Shipping Address')) ?></span> </strong> <div class="box-content"> <address> <?= $block->getAddressHtml($block->getAddressById($_pAddsses)) ?> </address> </div> <div class="box-actions"> <a class="action edit" href="<?= $block->escapeUrl($block->getAddressEditUrl($_pAddsses)) ?>"> <span><?= $block->escapeHtml(__('Change Shipping Address')) ?></span> </a> <form style="margin-top: 10px;" action="<?= $block->escapeUrl($block->getUrl('customer/address/delete', ['id' => $_pAddsses])) ?>"> <?= $block->getBlockHtml('formkey') ?> <button type="submit" class="action delete"> <span><?= $block->escapeHtml(__('Delete Address')) ?></span> </button> </form> </div> </div> <?php else : ?> <div class="box box-shipping-address"> <strong class="box-title"><span><?= $block->escapeHtml(__('Default Shipping Address')) ?></span></strong> <div class="box-content"> <p><?= $block->escapeHtml(__('You have no default shipping address in your address book.')) ?></p> </div> </div> <?php endif ?> </div> </div> <script type="text/x-magento-init"> { ".page-main": { "address": { "deleteAddress": "li.item a[role='delete-address']", "deleteUrlPrefix": "<?= $block->escapeJs($block->escapeUrl($block->getDeleteUrl())) ?>id/", "addAddress": "button[role='add-address']", "addAddressLocation": "<?= $block->escapeJs($block->escapeUrl($block->getAddAddressUrl())) ?>" } } } </script> |
Step 3.
Now, You have to add the below code at lines no 23 and 55.
1 |
<?= $customerAddressEdit->escapeHtmlAttr((!is_null($block->getAddressById($_pAddsses)->getCustomAttribute('custom_address_attribute')) ? $block->getAddressById($_pAddsses)->getCustomAttribute('custom_address_attribute')->getValue() : '')) ?> |
Step 4.
Finally, You can check your custom attribute after the phone number on the customer address book page.