*/ class Multiselect extends \Magento\Eav\Model\Attribute\Data\Select { /** * Extract data from request and return value * * @param RequestInterface $request * @return array|string */ public function extractValue(RequestInterface $request) { $values = $this->_getRequestValue($request); if ($values !== false && !is_array($values)) { $values = [$values]; } return $values; } /** * Export attribute value to entity model * * @param array|string $value * @return $this */ public function compactValue($value) { if (is_array($value)) { $value = implode(',', $value); } return parent::compactValue($value); } /** * Return formatted attribute value from entity model * * @param string $format * @return array|string */ public function outputValue($format = \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT) { $values = $this->getEntity()->getData($this->getAttribute()->getAttributeCode()); if (!is_array($values)) { $values = explode(',', $values); } switch ($format) { case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_JSON: case \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_ARRAY: $output = $values; // fall-through intentional default: $output = []; foreach ($values as $value) { if (!$value) { continue; } $output[] = $this->getAttribute()->getSource()->getOptionText($value); } $output = implode(', ', $output); break; } return $output; } }