通常,Magento 2商店的管理员在使用和自定义订单网格时都需要其他选项-基于特定的即用型参数进行过滤可能会成为真正的挑战。
最近,Magento开发人员向我提出了一个问题。他试图扩展Magento 2.3.2上的订单网格。网络上的旧帖子并没有起到任何作用,自最近两年以来,Magento发生了很多变化。
于他的问题,我建议你看一看具体案例的解决方案:
我们需要在订单网格中添加一列(包含完成购买的客户的区域代码)。此外,商店管理员必须可以通过此新添加的列来过滤订单。
这似乎很容易,但是有几件事需要注意。例如,在虚拟订单的情况下,购买商品的购物者可能没有任何送货地址。或者,我们该如何列出地区?开始开发时,应考虑所有这些因素。根据前面提到的问题,我们假设:
- 虚拟产品没有运送地区(“null”)。这将帮助您根据此参数选择它们,
- 就像默认的Magento 2一样,将列出地区并显示代码,而无需将其转换为标签。
因此,要将新列添加到订单网格,您需要:
1.创建一个新模块
首先,让我们确定模块和供应商名称。好吧,我不需要选择供应商名称-它是Alwayly(好像我可以选择一样)。我仍然可以选择模块名称。把它命名为ExtendedOrdersGrid
让我们创建以下目录:app/code/Alwayly/ExtendedOrdersGrid。要注册一个模块,我们将需要一些标准文件:
> registration.php
php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Alwayly_ExtendedOrdersGrid',
__DIR__
);
> composer.json
json
{
"name": "alwayly/module-extended-orders-grid",
"description": "Extended Orders Grid Extension",
"require": {
"magento/module-ui" : ">=100.1.0 < 102",
"magento/module-sales" : ">=100.0.0 <103"
},
"type": "magento2-module",
"version": "1.0.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Alwayly\\ExtendedOrdersGrid\\": ""
}
}
}
> etc/module.xml
xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Alwayly_ExtendedOrdersGrid" setup_version="1.0.0">
<sequence>
<module name="Magento_Sales"/>
<module name="Magento_Ui"/>
</sequence>
</module>
</config>
重要的是要注意,我已经削减了自动添加到我的IDE中的版权。因此,您可以毫无困难地使用此代码。

