Magento 2 Admin Custom Export Button Grid #codehacks
04 Abr, 2019 / 3 MIN readCrear una tienda online: Customización del proceso Export Grid
Hoy, vamos a ver como personalizar la exportación de los datos de un grid del backoffice en Magento 2 (la plataforma para tiendas online de código abierto, ahora Adobe Commerce) a través del ui component. ExportButton
Se da por hecho que el grid se ha creado mediante el ui component y existe el archivo listing.xml
El componente ExportButton es el responsable de exportar los datos contenidos en un grid a un formato específico (csv, xml, entre otros)
Para explicarlo más fácilmente usaremos un módulo que hemos llamado “StockAlert”
La configuración del componente ExportButton con un selectProvider específico, se hace en el tag de configuración listingToolbar del archivo listing.xml
… / 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]
Analicemos el código anterior:
Dentro del tag existe un tag que es donde se especifica el selectProvider
[cc lang="html"] interactiv4_stockalert_report_listing.interactiv4_stockalert_report_listing.spinner_columns.ids [/cc]
Ahora, en un siguiente tag se indican los controladores donde se personaliza la salida en el formato deseado
[cc lang="html"] csv CSV interactiv4_stockalert/export/gridToCsv xml Excel XML interactiv4_stockalert/export/gridToXml [/cc]
El tag [cc lang=»html»]interactiv4_stockalert/export/gridToCsv[/cc] hace referencia al controlador, que a su vez, implementará el modelo “ConvertToCsv.php”
El controlador … / 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]
Y el modelo … / 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]
Ahora esta clase (ConvertToCsv.php) ya se puede personalizar e implementar en el código que se quiera para que el archivo de exportación tenga el formato deseado.
En Interactiv4 cruzamos los límites de lo que es una agencia eCommerce. Somos tu partner y tu especialista en Magento 2 en pro de tu crecimiento local y global. Trabajamos con las mejores tecnologías, tenemos sobrada experiencia, estamos comprometidos con tu éxito…todo ello con una enorme pasión por el comercio electrónico.