/** * Select field filter HTML with selected value. * * @param Attribute $attribute * @param mixed $value * @return \Magento\Framework\Phrase|string * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ protected function _getSelectHtmlWithValue(Attribute $attribute, $value) { if ($attribute->getFilterOptions()) { $options = []; foreach ($attribute->getFilterOptions() as $value => $label) { $options[] = ['value' => $value, 'label' => $label]; } } else { $options = $attribute->getSource()->getAllOptions(false); } if ($size = count($options)) { // add empty vaue option $firstOption = reset($options); if ('' === $firstOption['value']) { $options[key($options)]['label'] = ''; } else { array_unshift($options, ['value' => '', 'label' => '']); } $arguments = ['name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'admin__control-select select select-export-filter']; /** @var $selectBlock \Magento\Framework\View\Element\Html\Select */ $selectBlock = $this->_layout->createBlock('Magento\\Framework\\View\\Element\\Html\\Select', '', ['data' => $arguments]); return $selectBlock->setOptions($options)->setValue($value)->getHtml(); } else { return __('We can\'t filter an attribute with no attribute options.'); } }
/** * Determine filter type for specified attribute. * * @static * @param \Magento\Eav\Model\Entity\Attribute $attribute * @return string * @throws \Magento\Framework\Exception\LocalizedException */ public static function getAttributeFilterType(\Magento\Eav\Model\Entity\Attribute $attribute) { if ($attribute->usesSource() || $attribute->getFilterOptions()) { return self::FILTER_TYPE_SELECT; } elseif ('datetime' == $attribute->getBackendType()) { return self::FILTER_TYPE_DATE; } elseif ('decimal' == $attribute->getBackendType() || 'int' == $attribute->getBackendType()) { return self::FILTER_TYPE_NUMBER; } elseif ('varchar' == $attribute->getBackendType() || 'text' == $attribute->getBackendType()) { return self::FILTER_TYPE_INPUT; } elseif ($attribute->isStatic()) { return self::getStaticAttributeFilterType($attribute); } else { throw new \Magento\Framework\Exception\LocalizedException(__('We can\'t determine the attribute filter type.')); } }
/** * Select field filter HTML with selected value. * * @param Attribute $attribute * @param mixed $value * @return string */ protected function _getSelectHtmlWithValue(Attribute $attribute, $value) { if ($attribute->getFilterOptions()) { $options = array(); foreach ($attribute->getFilterOptions() as $value => $label) { $options[] = array('value' => $value, 'label' => $label); } } else { $options = $attribute->getSource()->getAllOptions(false); } if ($size = count($options)) { // add empty vaue option $firstOption = reset($options); if ('' === $firstOption['value']) { $options[key($options)]['label'] = ''; } else { array_unshift($options, array('value' => '', 'label' => '')); } $arguments = array('name' => $this->getFilterElementName($attribute->getAttributeCode()), 'id' => $this->getFilterElementId($attribute->getAttributeCode()), 'class' => 'select select-export-filter'); /** @var $selectBlock \Magento\Framework\View\Element\Html\Select */ $selectBlock = $this->_layout->getBlockFactory()->createBlock('Magento\\Framework\\View\\Element\\Html\\Select', array('data' => $arguments)); return $selectBlock->setOptions($options)->setValue($value)->getHtml(); } else { return __('Attribute does not has options, so filtering is impossible'); } }