Skip to content

Commit a6bde97

Browse files
committed
Merge remote-tracking branch 'origin/ACP2E-231' into L3_Arrows_PR_20220301
2 parents 7ae5c47 + 5b83550 commit a6bde97

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Search\ViewModel;
9+
10+
use Magento\Framework\View\Element\Block\ArgumentInterface;
11+
12+
/**
13+
* View model for search additional form params
14+
*/
15+
class AdditionalSearchFormData implements ArgumentInterface
16+
{
17+
/**
18+
* Return search query params
19+
*
20+
* @return array
21+
*/
22+
public function getFormData(): array
23+
{
24+
return [];
25+
}
26+
}

app/code/Magento/Search/view/frontend/layout/default.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<block class="Magento\Framework\View\Element\Template" name="top.search" as="topSearch" template="Magento_Search::form.mini.phtml">
1212
<arguments>
1313
<argument name="configProvider" xsi:type="object">Magento\Search\ViewModel\ConfigProvider</argument>
14+
<argument name="additionalSearchFormData" xsi:type="object">Magento\Search\ViewModel\AdditionalSearchFormData</argument>
1415
</arguments>
1516
</block>
1617
</referenceContainer>

app/code/Magento/Search/view/frontend/templates/form.mini.phtml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
/** @var $escaper \Magento\Framework\Escaper */
1111
/** @var $configProvider \Magento\Search\ViewModel\ConfigProvider */
1212
$configProvider = $block->getData('configProvider');
13+
/** @var $versionManager \Magento\Search\ViewModel\AdditionalSearchFormData */
14+
$additionalSearchFormData = $block->getData('additionalSearchFormData');
1315
/** @var $helper \Magento\Search\Helper\Data */
1416
$helper = $configProvider->getSearchHelperData();
1517
$allowedSuggestion = $configProvider->isSuggestionsAllowed();
@@ -20,6 +22,12 @@ $quickSearchUrl = $allowedSuggestion ? $escaper->escapeUrl($helper->getSuggestUr
2022
<div class="block block-content">
2123
<form class="form minisearch" id="search_mini_form"
2224
action="<?= $escaper->escapeUrl($helper->getResultUrl()) ?>" method="get">
25+
<?php if (!empty($queryParams = $additionalSearchFormData->getFormData())): ?>
26+
<?php foreach ($queryParams as $param): ?>
27+
<input type="hidden" name="<?= $escaper->escapeHtmlAttr($param['name']) ?>"
28+
value="<?= $escaper->escapeHtmlAttr($param['value']) ?>"/>
29+
<?php endforeach; ?>
30+
<?php endif; ?>
2331
<div class="field search">
2432
<label class="label" for="search" data-role="minisearch-label">
2533
<span><?= $escaper->escapeHtml(__('Search')) ?></span>

dev/tests/integration/testsuite/Magento/CatalogSearch/Block/ResultTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,18 @@ public function testEscapeSearchText(string $searchValue, string $expectedOutput
7373
/** @var Result $searchResultBlock */
7474
$searchResultBlock = $this->layout->createBlock(Result::class);
7575
/** @var Template $searchBlock */
76+
$searchQueryParams = $this->getMockBuilder(\Magento\Search\ViewModel\AdditionalSearchFormData::class)
77+
->disableOriginalConstructor()
78+
->setMethods(['getFormData'])
79+
->getMock();
80+
$searchQueryParams->expects($this->any())
81+
->method('getFormData')
82+
->willReturn([]);
7683
$searchBlock = $this->layout->createBlock(Template::class);
77-
$searchBlock->setData(['configProvider' => $this->configProvider]);
84+
$searchBlock->setData([
85+
'configProvider' => $this->configProvider,
86+
'additionalSearchFormData' => $searchQueryParams,
87+
]);
7888
$searchBlock->setTemplate('Magento_Search::form.mini.phtml');
7989
/** @var RequestInterface $request */
8090
$request = $this->objectManager->get(RequestInterface::class);

0 commit comments

Comments
 (0)