Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FilterContext.php
Go to the documentation of this file.
1 <?php
8 
10 use Magento\Eav\Model\Config as EavConfig;
12 
22 {
26  private $exclusionStrategy;
27 
31  private $eavConfig;
32 
36  private $staticAttributeStrategy;
37 
46  public function __construct(
47  EavConfig $eavConfig,
48  AliasResolver $aliasResolver,
49  ExclusionStrategy $exclusionStrategy,
50  TermDropdownStrategy $termDropdownStrategy,
51  StaticAttributeStrategy $staticAttributeStrategy
52  ) {
53  $this->eavConfig = $eavConfig;
54  $this->exclusionStrategy = $exclusionStrategy;
55  $this->staticAttributeStrategy = $staticAttributeStrategy;
56  }
57 
61  public function apply(
62  \Magento\Framework\Search\Request\FilterInterface $filter,
63  \Magento\Framework\DB\Select $select
64  ) {
65  $isApplied = $this->exclusionStrategy->apply($filter, $select);
66 
67  if (!$isApplied) {
68  $attribute = $this->getAttributeByCode($filter->getField());
69  if ($attribute) {
70  if ($filter->getType() === \Magento\Framework\Search\Request\FilterInterface::TYPE_TERM
71  && in_array($attribute->getFrontendInput(), ['select', 'multiselect'], true)
72  ) {
73  $isApplied = false;
74  } elseif ($attribute->getBackendType() === AbstractAttribute::TYPE_STATIC) {
75  $isApplied = $this->staticAttributeStrategy->apply($filter, $select);
76  }
77  }
78  }
79 
80  return $isApplied;
81  }
82 
88  private function getAttributeByCode($field)
89  {
90  return $this->eavConfig->getAttribute(\Magento\Catalog\Model\Product::ENTITY, $field);
91  }
92 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
apply(\Magento\Framework\Search\Request\FilterInterface $filter, \Magento\Framework\DB\Select $select)
__construct(EavConfig $eavConfig, AliasResolver $aliasResolver, ExclusionStrategy $exclusionStrategy, TermDropdownStrategy $termDropdownStrategy, StaticAttributeStrategy $staticAttributeStrategy)