コード例 #1
0
 /**
  * Apply modifiers for filters
  *
  * @param DataProviderInterface $dataProvider
  * @param string $filterName
  * @return void
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 public function applyFilterModifier(DataProviderInterface $dataProvider, $filterName)
 {
     $filterModifier = $this->request->getParam(self::FILTER_MODIFIER);
     if (isset($filterModifier[$filterName]['condition_type'])) {
         $conditionType = $filterModifier[$filterName]['condition_type'];
         if (!in_array($conditionType, $this->allowedConditionTypes)) {
             throw new \Magento\Framework\Exception\LocalizedException(__('Condition type "%1" is not allowed', $conditionType));
         }
         $value = isset($filterModifier[$filterName]['value']) ? $filterModifier[$filterName]['value'] : null;
         $filter = $this->filterBuilder->setConditionType($conditionType)->setField($filterName)->setValue($value)->create();
         $dataProvider->addFilter($filter);
     }
 }
コード例 #2
0
 /**
  * Creates a filter DTO for given field/condition
  *
  * @param string $field Field for new filter
  * @param string|array $condition Condition for new filter.
  * @return Filter
  */
 protected function createFilterData($field, $condition)
 {
     $this->filterBuilder->setField($field);
     if (is_array($condition)) {
         $this->filterBuilder->setValue(reset($condition));
         $this->filterBuilder->setConditionType(key($condition));
     } else {
         // not an array, just use eq as condition type and given value
         $this->filterBuilder->setConditionType('eq');
         $this->filterBuilder->setValue($condition);
     }
     return $this->filterBuilder->create();
 }
コード例 #3
0
 /**
  * Apply selection by Excluded Included to Search Result
  *
  * @throws LocalizedException
  * @return void
  */
 public function applySelectionOnTargetProvider()
 {
     $selected = $this->request->getParam(static::SELECTED_PARAM);
     $excluded = $this->request->getParam(static::EXCLUDED_PARAM);
     if ('false' === $excluded) {
         return;
     }
     $component = $this->getComponent();
     $this->prepareComponent($component);
     $dataProvider = $component->getContext()->getDataProvider();
     try {
         if (is_array($excluded) && !empty($excluded)) {
             $this->filterBuilder->setConditionType('nin')->setField($dataProvider->getPrimaryFieldName())->setValue($excluded);
             $dataProvider->addFilter($this->filterBuilder->create());
         } elseif (is_array($selected) && !empty($selected)) {
             $this->filterBuilder->setConditionType('in')->setField($dataProvider->getPrimaryFieldName())->setValue($selected);
             $dataProvider->addFilter($this->filterBuilder->create());
         }
     } catch (\Exception $e) {
         throw new LocalizedException(__($e->getMessage()));
     }
 }