通常,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中的版权。因此,您可以毫无困难地使用此代码。</div>

    <div class=