Skip to content

Commit 43137e7

Browse files
committed
ACP2E-2272: Search suggesions not working on mini search form
1 parent f6d4542 commit 43137e7

File tree

3 files changed

+98
-7
lines changed

3 files changed

+98
-7
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\AdvancedSearch\Model\DataProvider;
7+
8+
use Magento\Search\Model\Autocomplete\DataProviderInterface;
9+
use Magento\Search\Model\Autocomplete\ItemFactory;
10+
use Magento\Search\Model\QueryFactory;
11+
use Magento\Framework\App\Config\ScopeConfigInterface as ScopeConfig;
12+
use Magento\AdvancedSearch\Model\SuggestedQueries;
13+
use Magento\CatalogSearch\Model\Autocomplete\DataProvider;
14+
use Magento\AdvancedSearch\Model\SuggestedQueriesInterface;
15+
use Magento\Store\Model\ScopeInterface;
16+
17+
class AutocompleteSuggestions implements DataProviderInterface
18+
{
19+
/**
20+
* @var QueryFactory
21+
*/
22+
private $queryFactory;
23+
24+
/**
25+
* @var ItemFactory
26+
*/
27+
private $itemFactory;
28+
29+
/**
30+
* @var SuggestedQueries
31+
*/
32+
private $suggestedQueries;
33+
34+
/**
35+
* @var DataProvider
36+
*/
37+
private $dataProvider;
38+
39+
/**
40+
* @var ScopeConfig
41+
*/
42+
private $scopeConfig;
43+
44+
/**
45+
* @param QueryFactory $queryFactory
46+
* @param ItemFactory $itemFactory
47+
* @param ScopeConfig $scopeConfig
48+
* @param SuggestedQueries $suggestedQueries
49+
* @param DataProvider $dataProvider
50+
*/
51+
public function __construct(
52+
QueryFactory $queryFactory,
53+
ItemFactory $itemFactory,
54+
ScopeConfig $scopeConfig,
55+
SuggestedQueries $suggestedQueries,
56+
DataProvider $dataProvider
57+
) {
58+
$this->queryFactory = $queryFactory;
59+
$this->itemFactory = $itemFactory;
60+
$this->suggestedQueries = $suggestedQueries;
61+
$this->dataProvider = $dataProvider;
62+
$this->scopeConfig = $scopeConfig;
63+
}
64+
65+
/**
66+
* @inheritdoc
67+
*/
68+
public function getItems()
69+
{
70+
$result = [];
71+
if ($this->scopeConfig->isSetFlag(
72+
SuggestedQueriesInterface::SEARCH_SUGGESTION_ENABLED,
73+
ScopeInterface::SCOPE_STORE
74+
)) {
75+
// populate with search suggestions
76+
$query = $this->queryFactory->get();
77+
$suggestions = $this->suggestedQueries->getItems($query);
78+
foreach ($suggestions as $suggestion) {
79+
$resultItem = $this->itemFactory->create([
80+
'title' => $suggestion->getQueryText(),
81+
'num_results' => $suggestion->getResultsCount(),
82+
]);
83+
$result[] = $resultItem;
84+
}
85+
} else {
86+
// populate with autocomplete
87+
$result = $this->dataProvider->getItems();
88+
}
89+
return $result;
90+
}
91+
}

app/code/Magento/AdvancedSearch/etc/di.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,11 @@
4040
</arguments>
4141
</type>
4242
<preference for="Magento\AdvancedSearch\Model\Adapter\DataMapper\AdditionalFieldsProviderInterface" type="Magento\AdvancedSearch\Model\Adapter\DataMapper\AdditionalFieldsProvider" />
43+
<type name="Magento\Search\Model\Autocomplete">
44+
<arguments>
45+
<argument name="dataProviders" xsi:type="array">
46+
<item name="10" xsi:type="object">Magento\AdvancedSearch\Model\DataProvider\AutocompleteSuggestions</item>
47+
</argument>
48+
</arguments>
49+
</type>
4350
</config>

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,13 +161,6 @@
161161
<argument name="context" xsi:type="object">Magento\CatalogSearch\Model\Layer\Search\Context</argument>
162162
</arguments>
163163
</type>
164-
<type name="Magento\Search\Model\Autocomplete">
165-
<arguments>
166-
<argument name="dataProviders" xsi:type="array">
167-
<item name="10" xsi:type="object">Magento\CatalogSearch\Model\Autocomplete\DataProvider</item>
168-
</argument>
169-
</arguments>
170-
</type>
171164
<type name="Magento\Framework\Search\Adapter\Aggregation\AggregationResolver">
172165
<arguments>
173166
<argument name="resolvers" xsi:type="array">

0 commit comments

Comments
 (0)