当前位置: 技术文章>> 如何在Magento 2的管理产品网格上按多个SKU进行过滤?

文章标题:如何在Magento 2的管理产品网格上按多个SKU进行过滤?
  • 文章分类: Magento
  • 28004 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


在Magento 2中按管理产品网格上的多个SKU进行筛选的步骤:

步骤 1: 在扩展中创建 di.xml 文件

app\code\Vendor\Extension\etc\di.xml

现在,添加代码,如下所示

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider" type="Vendor\Extension\Model\ProductDataProvider" />
</config>

步骤 2:现在在以下路径中创建产品数据提供程序.php文件

app\code\Vendor\Extension\Model\ProductDataProvider.php

然后添加代码,如下所述

<?php
 
namespace Vendor\Extension\Model;
 
class ProductDataProvider extends \Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider
{
    /**
     * @inheritdoc
     */
    public function addFilter(\Magento\Framework\Api\Filter $filter)
    {
        if (isset($this->addFilterStrategies[$filter->getField()]))
        {
            $this->addFilterStrategies[$filter->getField()]
                ->addFilter(
                    $this->getCollection(),
                    $filter->getField(),
                    [$filter->getConditionType() => $filter->getValue()]
                );
        }
        elseif ($filter->getField() == "sku" && count(explode(",",str_replace("%","",$filter->getValue()))) > 1)
        {
            $withComma = explode(",",str_replace("%","",$filter->getValue()));
 
            $attrs = array();
            foreach ($withComma as $cItem)
            {
                $attrs[] = ['attribute' => $filter->getField(), $filter->getConditionType() => '%'.trim($cItem).'%'];
            }
            $this->getCollection()->addAttributeToFilter($attrs);
        }
        else
        {
            parent::addFilter($filter);
        }
    }
}

结论:

因此,通过这种方式,您可以在Magento 2的管理产品网格上过滤多个SKU。


推荐文章