如何将带有过滤器的列添加到Magento 2订单网格?
通常,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中的版权。因此,您可以毫无困难地使用此代码。
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。