Compartir

Magento 2 Admin Custom Export Button Grid #codehacks

4 abril, 2019

CUSTOMIZACIÓN DEL PROCESO EXPORT GRID

Hoy vamos a ver como personalizar la exportación de los datos de un grid del backoffice en Magento2 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

1
2
3
4
5
6
7
8
9
10
interactiv4_stockalert_report_listing.interactiv4_stockalert_report_listing.spinner_columns.ids

csv
CSV
interactiv4_stockalert/export/gridToCsv

xml
Excel XML

interactiv4_stockalert/export/gridToXml

Analicemos el código anterior:

Dentro del tag existe un tag que es donde se especifica el selectProvider

1
interactiv4_stockalert_report_listing.interactiv4_stockalert_report_listing.spinner_columns.ids

Ahora, en un siguiente tag se indica los controladores donde se personaliza la salida en el formato deseado

1
2
3
4
5
6
7
csv
CSV
interactiv4_stockalert/export/gridToCsv

xml
Excel XML
interactiv4_stockalert/export/gridToXml

El tag

1
interactiv4_stockalert/export/gridToCsv

hace referencia al controlador, que a su vez, implementará el modelo “ConvertToCsv.php”

El controlador … / app / code / [vendor] / [module] / Controller / Adminhtml / Export / GridToCsv.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!--?php &lt;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;

.
.
.

Y el modelo … / app / code / [vendor] / [module] / Model / Export / ConvertToCsv.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!--?php &lt;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;
.
.
.

Ahora esta clase (ConvertToCsv.php) ya se puede personalizar e implementar el código que se quiera para que el archivo de exportación tenga el formato deseado.

Categoría
Autor

Compartir

Suscríbete a nuestra newsletter

También te puede interesar

Usamos cookies de terceros para mejorar nuestros servicios y obtener datos estadísticos de tus hábitos de navegación. Si continúas navegando consideramos que aceptas su uso. Puedes obtener más información en Política de privacidad y cookies