在产品网格 magento2 中添加类别过滤器
To add category filter in Product grid magento2
我尝试在产品网格管理中添加类别列area.I已通过以下代码成功添加。
<column name="category" class="Chilly\Productsgrid\Ui\Component\Listing\Column\Category">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Chilly\Productsgrid\Model\Category\Categorylist</item>
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">select</item>
<item name="dataType" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Categories</item>
<item name="sortOrder" xsi:type="number">50</item>
</item>
</argument>
</column>
在Chilly\Productsgrid\Ui\Component\Listing\Column\Category.php、prepareDataSource()方法中
$fieldName = $this->getData('name');
if (isset($dataSource['data']['items'])) {
//$categories=array();
foreach ($dataSource['data']['items'] as & $item) {
$p_id=$item['entity_id'];
$product=$this->_productloader->create()->load($p_id);
$cats = $product->getCategoryIds();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$categories=array();
if(count($cats) ){
foreach($cats as $cat){
$category = $objectManager->create('Magento\Catalog\Model\Category')->load($cat);
$categories[]=$category->getName();
}
}
$item[$fieldName]=implode(',',$categories);
}
}
return $dataSource;
已在产品网格中获取类别列表。我尝试了以下代码来添加过滤器,
<item name="filter" xsi:type="string">select</item>
并向类别过滤器下拉列表添加选项,
<item name="options" xsi:type="object">Chilly\Productsgrid\Model\Category\Categorylist</item>
类别下拉列表出现在过滤器部分。但不将类别列表添加到类别下拉列表中。
但我担心,这是否是完成任务的正确方法!你能告诉我,这是正确的方法并为我提供解决方案吗?
通过覆盖 Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider Ui 文件
修复了类别过滤器问题
我尝试在产品网格管理中添加类别列area.I已通过以下代码成功添加。
<column name="category" class="Chilly\Productsgrid\Ui\Component\Listing\Column\Category">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Chilly\Productsgrid\Model\Category\Categorylist</item>
<item name="config" xsi:type="array">
<item name="filter" xsi:type="string">select</item>
<item name="dataType" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Categories</item>
<item name="sortOrder" xsi:type="number">50</item>
</item>
</argument>
</column>
在Chilly\Productsgrid\Ui\Component\Listing\Column\Category.php、prepareDataSource()方法中
$fieldName = $this->getData('name');
if (isset($dataSource['data']['items'])) {
//$categories=array();
foreach ($dataSource['data']['items'] as & $item) {
$p_id=$item['entity_id'];
$product=$this->_productloader->create()->load($p_id);
$cats = $product->getCategoryIds();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$categories=array();
if(count($cats) ){
foreach($cats as $cat){
$category = $objectManager->create('Magento\Catalog\Model\Category')->load($cat);
$categories[]=$category->getName();
}
}
$item[$fieldName]=implode(',',$categories);
}
}
return $dataSource;
已在产品网格中获取类别列表。我尝试了以下代码来添加过滤器,
<item name="filter" xsi:type="string">select</item>
并向类别过滤器下拉列表添加选项,
<item name="options" xsi:type="object">Chilly\Productsgrid\Model\Category\Categorylist</item>
类别下拉列表出现在过滤器部分。但不将类别列表添加到类别下拉列表中。
但我担心,这是否是完成任务的正确方法!你能告诉我,这是正确的方法并为我提供解决方案吗?
通过覆盖 Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider Ui 文件
修复了类别过滤器问题