Skip to content

Commit 3c992de

Browse files
author
Oleksii Korshenko
authored
MAGETWO-70316: Add fulltext/keyword search field for product admin grid #10089
2 parents b5322bc + 6ea1115 commit 3c992de

File tree

4 files changed

+66
-0
lines changed

4 files changed

+66
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\CatalogSearch\Ui\DataProvider\Product;
7+
8+
use Magento\Framework\Data\Collection;
9+
use Magento\CatalogSearch\Model\ResourceModel\Search\Collection as SearchCollection;
10+
use Magento\Ui\DataProvider\AddFilterToCollectionInterface;
11+
12+
/**
13+
* Class AddFulltextFilterToCollection
14+
*/
15+
class AddFulltextFilterToCollection implements AddFilterToCollectionInterface
16+
{
17+
/**
18+
* Search Collection
19+
*
20+
* @var SearchCollection
21+
*/
22+
private $searchCollection;
23+
24+
/**
25+
* @param SearchCollection $searchCollection
26+
*/
27+
public function __construct(SearchCollection $searchCollection)
28+
{
29+
$this->searchCollection = $searchCollection;
30+
}
31+
32+
/**
33+
* {@inheritdoc}
34+
*
35+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
36+
*/
37+
public function addFilter(Collection $collection, $field, $condition = null)
38+
{
39+
/** @var $collection \Magento\Catalog\Model\ResourceModel\Product\Collection */
40+
if (isset($condition['fulltext']) && !empty($condition['fulltext'])) {
41+
$this->searchCollection->addBackendSearchFilter($condition['fulltext']);
42+
$productIds = $this->searchCollection->load()->getAllIds();
43+
$collection->addIdFilter($productIds);
44+
}
45+
}
46+
}

app/code/Magento/CatalogSearch/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"magento/module-eav": "100.2.*",
1212
"magento/module-backend": "100.2.*",
1313
"magento/module-theme": "100.2.*",
14+
"magento/module-ui": "100.2.*",
1415
"magento/module-catalog-inventory": "100.2.*",
1516
"magento/framework": "100.2.*"
1617
},

app/code/Magento/CatalogSearch/etc/adminhtml/di.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,11 @@
1919
<type name="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front">
2020
<plugin name="search_weigh" type="Magento\CatalogSearch\Block\Plugin\FrontTabPlugin" />
2121
</type>
22+
<type name="Magento\Catalog\Ui\DataProvider\Product\ProductDataProvider">
23+
<arguments>
24+
<argument name="addFilterStrategies" xsi:type="array">
25+
<item name="fulltext" xsi:type="object">Magento\CatalogSearch\Ui\DataProvider\Product\AddFulltextFilterToCollection</item>
26+
</argument>
27+
</arguments>
28+
</type>
2229
</config>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
9+
<listingToolbar name="listing_top">
10+
<filterSearch name="fulltext"/>
11+
</listingToolbar>
12+
</listing>

0 commit comments

Comments
 (0)