Skip to content

Commit 2272d30

Browse files
authored
fix(refactor): IsEntityFiltered to detect custom-entity filters via resolvers and request params
Refactor IsEntityFiltered to detect custom-entity filters via resolvers and request params ### Summary - Retrieve catalog and custom-entity layers through their resolvers to avoid direct ObjectManager use - Inspect request parameters against the filter list instead of relying on an uninitialized layer state - Keep existing catalog-layer filter detection logic unchanged
1 parent 199ec7e commit 2272d30

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

ViewModel/IsEntityFiltered.php

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,40 +14,46 @@
1414
*/
1515
declare(strict_types=1);
1616

17-
namespace Amadeco\SmileCustomEntityLayeredNavigation\ViewModel;
17+
namespace Artbambou\EntityDescription\ViewModel;
1818

1919
use Magento\Framework\View\Element\Block\ArgumentInterface;
2020
use Magento\Framework\App\RequestInterface;
21-
use Magento\Catalog\Model\Layer;
22-
use Magento\Catalog\Model\Layer\Resolver;
21+
use Magento\Catalog\Model\Layer as CatalogLayer;
22+
use Magento\Catalog\Model\Layer\Resolver as CatalogLayerResolver;
2323
use Amadeco\SmileCustomEntityLayeredNavigation\Block\SetList as EntitiesPager;
2424
use Amadeco\SmileCustomEntityLayeredNavigation\Model\Layer as EntitiesLayer;
25+
use Amadeco\SmileCustomEntityLayeredNavigation\Model\Layer\Resolver as EntitiesLayerResolver;
26+
use Amadeco\SmileCustomEntityLayeredNavigation\Model\Layer\FilterList as EntitiesFilterList;
2527
use Amadeco\SmileCustomEntityLayeredNavigation\Model\Set\SetList\Toolbar as ToolbarModel;
2628
use Magento\Theme\Block\Html\Pager as ProductsPager;
2729

2830
class IsEntityFiltered implements ArgumentInterface
2931
{
30-
private Layer $catalogLayer;
32+
private CatalogLayer $catalogLayer;
33+
private EntitiesLayer $entitiesLayer;
3134

3235
/**
33-
* @param RequestInterface $request
34-
* @param Resolver $layerResolver
35-
* @param ProductsPager $productsPager
36-
* @param EntitiesPager $entitiesPager
37-
* @param EntitiesLayer $entitiesLayer
36+
* @param RequestInterface $request
37+
* @param CatalogLayerResolver $layerResolver
38+
* @param ProductsPager $productsPager
39+
* @param EntitiesPager $entitiesPager
40+
* @param EntitiesLayerResolver $entitiesLayerResolver
41+
* @param EntitiesFilterList $filterList
3842
*/
3943
public function __construct(
4044
private RequestInterface $request,
41-
private Resolver $layerResolver,
45+
private CatalogLayerResolver $layerResolver,
4246
private ProductsPager $productsPager,
4347
private EntitiesPager $entitiesPager,
44-
private EntitiesLayer $entitiesLayer
48+
private EntitiesLayerResolver $entitiesLayerResolver,
49+
private EntitiesFilterList $filterList
4550
) {
46-
$this->request = $request;
47-
$this->catalogLayer = $layerResolver->get();
51+
$this->request = $request;
52+
$this->catalogLayer = $layerResolver->get();
4853
$this->productsPager = $productsPager;
4954
$this->entitiesPager = $entitiesPager;
50-
$this->entitiesLayer = $entitiesLayer;
55+
$this->entitiesLayer = $entitiesLayerResolver->get();
56+
$this->filterList = $filterList;
5157
}
5258

5359
/**
@@ -68,10 +74,18 @@ public function isFiltered(): bool
6874
$requestParams = array_keys($this->request->getParams());
6975
$found = array_intersect($params, $requestParams);
7076

77+
$entityFiltersApplied = false;
78+
foreach ($this->filterList->getFilters($this->entitiesLayer) as $filter) {
79+
if ($this->request->getParam($filter->getRequestVar()) !== null) {
80+
$entityFiltersApplied = true;
81+
break;
82+
}
83+
}
84+
7185
return (
7286
count($found) > 0 ||
7387
count($this->catalogLayer->getState()->getFilters()) > 0 ||
74-
count($this->entitiesLayer->getState()->getFilters()) > 0
88+
$entityFiltersApplied
7589
);
7690
}
7791
}

0 commit comments

Comments
 (0)