我想在magento管理信息中心的销售订单网格中添加一列。但是该列的值来自某个进程,而不是来自数据库。那可能吗?怎么做?提前谢谢。
答案 0 :(得分:2)
您可以通过向自定义模块添加名为view/adminhtml/ui_component/sales_order_grid.xml
的文件向管理网格添加一列,其中包含以下内容:
<?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>
您的Example.php
- 文件应扩展Magento\Ui\Component\Listing\Columns\Column
并使用prepareDataSource()
方法填充数据:
/**
* @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;
}
请注意,如果要添加sort和filter选项,则需要添加一些其他调整,但这取决于要在列中显示的数据类型。