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

How To Export Filtered Collection From Ui Grid Magento 2

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.

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