Quiero agregar una columna a la cuadrícula de pedidos de ventas en el panel de administración de Magento. Pero el valor de la columna proviene de algún proceso, no de la base de datos. ¿Es eso posible? ¿Y, cómo hacerlo? Gracias por adelantado.
Puede agregar una columna a la cuadrícula de administración agregando un archivo llamado view/adminhtml/ui_component/sales_order_grid.xml a su módulo personalizado con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?> <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <listingToolbar name="listing_top"/> <columns name="sales_order_columns"> <column name="order_reference" class="Vendor\Example\Ui\Component\Listing\Column\Example"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="visible" xsi:type="boolean">true</item> <item name="label" xsi:type="string" translate="true">Example Column</item> </item> </argument> </column> </columns> </listing> Su archivo Example.php debe extender Magento\Ui\Component\Listing\Columns\Column y tener un método prepareDataSource() para completar los datos:
/** * @param array $dataSource * @return array */ public function prepareDataSource(array $dataSource) { if (isset($dataSource['data']['items'])) { foreach ($dataSource['data']['items'] as & $item) { $item[$this->getData('name')] = 'Something' } } return $dataSource; }Tenga en cuenta que si desea agregar opciones de clasificación y filtrado, debe agregar algunos otros ajustes, pero eso depende del tipo de datos que desee mostrar en la columna.