Webkul
Services
Technologies Bagisto QloApps
iOS Android SAP BigCommerce Wix
Trusted by
Samsung Intel Toyota Walmart Disney Nokia Nestlé Decathlon
See all customers
Back to Top
DEV

Add Custom Column in Customer Grid

In this blog, we are going to learn that how we can add a custom customer attribute column in the customer grid at the admin section.

Here, I have created a custom customer attribute “aadhaar_number”, that I will display in the customer grid.

To add the custom column in the customer grid, you have to follow the below steps:

1. Create customer_listing.xml file inside app/code/Vendor/CustomModule/view/adminhtml/ui_component/ directory.

<?xml version="1.0" encoding="UTF-8"?>
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
        <listingToolbar name="listing_top"/>
    <columns name="customer_columns" class="Magento\Customer\Ui\Component\Listing\Columns">
        <column name="aadhaar_number" class="Vendor\CustomModule\Ui\Component\Listing\Column\AadhaarNumber">
            <argument name="data" xsi:type="array">
                    <item name="config" xsi:type="array">
                    <item name="filter" xsi:type="string">text</item>
                    <item name="editor" xsi:type="string">text</item>
                    <item name="label" xsi:type="string" translate="true">Aadhaar Number</item>
                    <item name="sortOrder" xsi:type="number">40</item>
                    </item>
            </argument>
        </column>
    </columns>
</listing>

2. Create AadhaarNumber.php file inside app/code/Vendor/CustomModule/Ui/Component/Listing/Column/ directory.

<?php
namespace Vendor\CustomModule\Ui\Component\Listing\Column;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Framework\View\Element\UiComponentFactory;
use Magento\Ui\Component\Listing\Columns\Column;

class AadhaarNumber extends Column
{
    /**
     *
     * @param ContextInterface   $context
     * @param UiComponentFactory $uiComponentFactory
     * @param array              $components
     * @param array              $data
     */
    public function __construct(
        ContextInterface $context,
        UiComponentFactory $uiComponentFactory,
        array $components = [],
        array $data = []
    ) {
        parent::__construct($context, $uiComponentFactory, $components, $data);
    }
    /**
     * Prepare Data Source
     *
     * @param array $dataSource
     * @return array
     */
    public function prepareDataSource(array $dataSource)
    {
        if (isset($dataSource['data']['items'])) {
            foreach ($dataSource['data']['items'] as & $item)
            {
                $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
                $customer = $objectManager->create('Magento\Customer\Model\Customer')->load($item['entity_id']);
                $item[$this->getData('name')] = $customer->getAadhaarNumber();
            }
        }
        return $dataSource;
    }
}
?>

3. Now, in the admin section, the “Aadhaar Number” column will be added in the customer grid as following image:

customerGrid
Custom Column ‘Aadhaar Number’ in Custom Grid

Hope this will be helpful. Thanks 🙂

Next Blog: Make Submenu position right adjacent of parent menu at frontend in Magento 2

Previous Blog: Create a custom command to disable a module in Magento 2

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


2 comments

  • Khushboo Sahu (Moderator)
  • Michael
  • Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home