Back to Top

How To Export Filtered Collection From Ui Grid Magento 2

Updated 14 July 2018

How To Export Filtered Collection From Ui Grid Magento 2 => Almost all the grids are made using ui component in magento 2.Ui component has a feature to export collection data in csv and xml format.
By default it exports complete collection.
so if you want to export few records from the collection using a filter.
then i am going to explain how you can do this.

First of all you have set the class for export_button element, where you can filter the collection.

<exportButton name="export_button" class="Webkul\FilterCollectionTest\Ui\Component\ExportButton">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="selectProvider" xsi:type="string">filtercollectiontest_chat_listing.filtercollectiontest_chat_listing.filtercollectiontest_chat_columns.ids</item>
        </item>
    </argument>
</exportButton>

Then create the file on above mentioned location (Webkul\FilterCollectionTest\Ui\Component\ExportButton).

<?php
/**
 * Webkul Software.
 *
 * @category  Webkul
 * @package   Webkul_FilterCollectionTest
 * @author    Webkul
 * @copyright Copyright (c) Webkul Software Private Limited (https://webkul.com)
 * @license   https://store.webkul.com/license.html
 */

namespace Webkul\FilterCollectionTest\Ui\Component;

/**
 * Class ExportButton
 */
class ExportButton extends \Magento\Ui\Component\AbstractComponent
{
    /**
     * Component name
     */
    const NAME = 'exportButton';

    /**
     * @var \Magento\Framework\UrlInterface
     */
    protected $_urlBuilder;

    /**
     * @var \Magento\Framework\App\Request\Http
     */
    protected $_request;

    /**
     * @param ContextInterface $context
     * @param UrlInterface $urlBuilder
     * @param \Magento\Framework\App\Request\Http $request
     * @param array $components
     * @param array $data
     */
    public function __construct(
        \Magento\Framework\View\Element\UiComponent\ContextInterface $context,
        \Magento\Framework\UrlInterface $urlBuilder,
        \Magento\Framework\App\Request\Http $request,
        array $components = [],
        array $data = []
    ) {
        parent::__construct($context, $components, $data);
        $this->_urlBuilder = $urlBuilder;
        $this->_request = $request;
    }

    /**
     * @return void
     */
    public function prepare()
    {
        $customerId = $this->_request->getParam('customer_id');
        if (isset($customerId)) {
            $configData = $this->getData('config');
            if (isset($configData['options'])) {
                $configOptions = [];
                foreach ($configData['options'] as $configOption) {
                    $configOption['url'] = $this->_urlBuilder->getUrl(
                        $configOption['url'],
                        ["customer_id"=>$customerId]
                    );
                    $configOptions[] = $configOption;
                }
                $configData['options'] = $configOptions;
                $this->setData('config', $configData);
            }
        }
        parent::prepare();
    }
}

So now when you do the export filter collection will be exported. here i have made filter of customer id.

Hope so it will help someone.

Searching for an experienced
Magento 2 Company ?
Find out More

Thank you

. . .

Leave a Comment

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


2 comments

  • Bhanwar
    • Jyotsna Gautam (Moderator)
  • Back to Top

    Message Sent!

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

    Back to Home