Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
FilterModifier.php
Go to the documentation of this file.
1 <?php
7 
11 
16 {
20  const FILTER_MODIFIER = 'filters_modifier';
21 
25  protected $request;
26 
30  protected $filterBuilder;
31 
36 
43  {
44  $this->request = $request;
45  $this->filterBuilder = $filterBuilder;
46  $this->allowedConditionTypes = array_merge(
47  ['eq', 'neq', 'in', 'nin', 'null', 'notnull'],
49  );
50  }
51 
60  public function applyFilterModifier(DataProviderInterface $dataProvider, $filterName)
61  {
62  $filterModifier = $this->request->getParam(self::FILTER_MODIFIER);
63  if (isset($filterModifier[$filterName]['condition_type'])) {
64  $conditionType = $filterModifier[$filterName]['condition_type'];
65  if (!in_array($conditionType, $this->allowedConditionTypes)) {
66  throw new \Magento\Framework\Exception\LocalizedException(
67  __('Condition type "%1" is not allowed', $conditionType)
68  );
69  }
70  $value = isset($filterModifier[$filterName]['value'])
71  ? $filterModifier[$filterName]['value']
72  : null;
73  $filter = $this->filterBuilder->setConditionType($conditionType)
74  ->setField($filterName)
75  ->setValue($value)
76  ->create();
77  $dataProvider->addFilter($filter);
78  }
79  }
80 }
__()
Definition: __.php:13
$value
Definition: gender.phtml:16
__construct(RequestInterface $request, FilterBuilder $filterBuilder, $allowedConditionTypes=[])
applyFilterModifier(DataProviderInterface $dataProvider, $filterName)