Magento 2 Admin Custom Export Button Grid #codehacks
04 Apr, 2019 / 2 MIN read
How to customize ExportButton Grid
Today we are going to view how to customize the export grid data in Magento2.
ExportButton Component is responsible for export grid data to specified data format (cvs, xml, and so on).

For this tutorial we are going to use a Module example called “StockAlert”

To enable ExportButton Component we need to add exportButton element with specified selectProvider item into listing configuration file (listing.xml), inside
… / app / code / [vendor] / [module] / view / adminhtml / ui_component / [vendor] _ [module] _ [referencia] _ listing.xml
[cc lang="html"] interactiv4_stockalert_report_listing.interactiv4_stockalert_report_listing.spinner_columns.ids csv CSV interactiv4_stockalert/export/gridToCsv xml Excel XML interactiv4_stockalert/export/gridToXml [/cc]
Let`s do a quick code review:
Inside tag exist a tag where is setted the select Provider
[cc lang="html"] interactiv4_stockalert_report_listing.interactiv4_stockalert_report_listing.spinner_columns.ids [/cc]
In the next tag set the controllers where customize output format (CSV/XML/…)
[cc lang="html"] csv CSV interactiv4_stockalert/export/gridToCsv xml Excel XML interactiv4_stockalert/export/gridToXml [/cc]
In tag [cc lang=”html”]interactiv4_stockalert/export/gridToCsv[/cc] tag is called the controller, which implement the model “ConvertToCsv.php”

The controller … / app / code / [vendor] / [module] / Controller / Adminhtml / Export / GridToCsv.php
[cc lang="html"]<!--?php <br ?--> declare(strict_types=1); /** * @author Interactiv4 Team * @copyright Copyright (c) Interactiv4 (https://www.interactiv4.com) */ namespace Interactiv4\StockAlert\Controller\Adminhtml\Export; use Interactiv4\StockAlert\Model\Export\ConvertToCsv; use Magento\Backend\App\Action; use Magento\Backend\App\Action\Context; use Magento\Framework\App\Response\Http\FileFactory; /** * Class Render */ class GridToCsv extends Action { /** * @var ConvertToCsv */ protected $converter; . . . [/cc]
And the model … / app / code / [vendor] / [module] / Model / Export / ConvertToCsv.php
[cc lang="html"] <!--?php <br ?--> declare(strict_types=1); /** * @author Interactiv4 Team * @copyright Copyright (c) Interactiv4 (https://www.interactiv4.com) */ namespace Interactiv4\StockAlert\Model\Export; use Magento\Framework\Api\Search\DocumentInterface; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Convert\ExcelFactory; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Filesystem; use Magento\Framework\Filesystem\Directory\WriteInterface; use Magento\Ui\Component\MassAction\Filter; use Magento\Ui\Model\Export\MetadataProvider; use Magento\Ui\Model\Export\SearchResultIteratorFactory; /** * Class ConvertToXls */ class ConvertToCsv { /** * @var WriteInterface */ protected $directory; . . . [/cc]
Then you can implement into this model the code to customize the export format file.