Ejemplo n.º 1
0
 /**
  * Retrive options ids from a labels array.
  *
  * @param Attribute $attribute Attribute.
  * @param string[]  $labels    Labels
  *
  * @return integer[]
  */
 private function getOptionIds(Attribute $attribute, $labels)
 {
     $optionIds = [];
     if (!is_array($labels)) {
         $labels = [$labels];
     }
     $options = $attribute->getSource()->getAllOptions();
     foreach ($labels as $label) {
         foreach ($options as $option) {
             if ($option['label'] == $label) {
                 $optionIds[] = (int) $option['value'];
             }
         }
     }
     return $optionIds;
 }
Ejemplo n.º 2
0
 /**
  * Add data about search criteria to object state
  *
  * @param   EntityAttribute $attribute
  * @param   mixed $value
  * @return  $this
  */
 protected function _addSearchCriteria($attribute, $value)
 {
     $name = $attribute->getStoreLabel();
     if (is_array($value)) {
         if (isset($value['from']) && isset($value['to'])) {
             if (!empty($value['from']) || !empty($value['to'])) {
                 if (isset($value['currency'])) {
                     /** @var $currencyModel Currency */
                     $currencyModel = $this->_currencyFactory->create()->load($value['currency']);
                     $from = $currencyModel->format($value['from'], array(), false);
                     $to = $currencyModel->format($value['to'], array(), false);
                 } else {
                     $currencyModel = null;
                 }
                 if (strlen($value['from']) > 0 && strlen($value['to']) > 0) {
                     // -
                     $value = sprintf('%s - %s', $currencyModel ? $from : $value['from'], $currencyModel ? $to : $value['to']);
                 } elseif (strlen($value['from']) > 0) {
                     // and more
                     $value = __('%1 and greater', $currencyModel ? $from : $value['from']);
                 } elseif (strlen($value['to']) > 0) {
                     // to
                     $value = __('up to %1', $currencyModel ? $to : $value['to']);
                 }
             } else {
                 return $this;
             }
         }
     }
     if (($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') && is_array($value)) {
         foreach ($value as $key => $val) {
             $value[$key] = $attribute->getSource()->getOptionText($val);
             if (is_array($value[$key])) {
                 $value[$key] = $value[$key]['label'];
             }
         }
         $value = implode(', ', $value);
     } elseif ($attribute->getFrontendInput() == 'select' || $attribute->getFrontendInput() == 'multiselect') {
         $value = $attribute->getSource()->getOptionText($value);
         if (is_array($value)) {
             $value = $value['label'];
         }
     } elseif ($attribute->getFrontendInput() == 'boolean') {
         $value = $value == 1 ? __('Yes') : __('No');
     }
     $this->_searchCriterias[] = array('name' => $name, 'value' => $value);
     return $this;
 }
Ejemplo n.º 3
0
 /**
  * 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.');
     }
 }
Ejemplo n.º 4
0
 /**
  * Apply configuration specific for different element type
  *
  * @param string $inputType
  * @param \Magento\Framework\Data\Form\Element\AbstractElement $element
  * @param \Magento\Eav\Model\Entity\Attribute $attribute
  * @return void
  */
 protected function _applyTypeSpecificConfig($inputType, $element, \Magento\Eav\Model\Entity\Attribute $attribute)
 {
     switch ($inputType) {
         case 'select':
             $element->setValues($attribute->getSource()->getAllOptions(true, true));
             break;
         case 'multiselect':
             $element->setValues($attribute->getSource()->getAllOptions(false, true));
             $element->setCanBeEmpty(true);
             break;
         case 'date':
             $element->setDateFormat($this->_localeDate->getDateFormatWithLongYear());
             break;
         case 'multiline':
             $element->setLineCount($attribute->getMultilineCount());
             break;
         default:
             break;
     }
 }
Ejemplo n.º 5
0
 /**
  * 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');
     }
 }