/** * Return attribute data model by attribute * Set entity to data model (need for work) * * @param \Magento\Eav\Model\Attribute $attribute * @param \Magento\Framework\Model\AbstractModel $entity * @return \Magento\Eav\Model\Attribute\Data\AbstractData */ public function create(\Magento\Eav\Model\Attribute $attribute, \Magento\Framework\Model\AbstractModel $entity) { /* @var $dataModel \Magento\Eav\Model\Attribute\Data\AbstractData */ $dataModelClass = $attribute->getDataModel(); if (!empty($dataModelClass)) { if (empty($this->_dataModels[$dataModelClass])) { $dataModel = $this->_objectManager->create($dataModelClass); $this->_dataModels[$dataModelClass] = $dataModel; } else { $dataModel = $this->_dataModels[$dataModelClass]; } } else { if (empty($this->_dataModels[$attribute->getFrontendInput()])) { $dataModelClass = sprintf('Magento\\Eav\\Model\\Attribute\\Data\\%s', $this->string->upperCaseWords($attribute->getFrontendInput())); $dataModel = $this->_objectManager->create($dataModelClass); $this->_dataModels[$attribute->getFrontendInput()] = $dataModel; } else { $dataModel = $this->_dataModels[$attribute->getFrontendInput()]; } } $dataModel->setAttribute($attribute); $dataModel->setEntity($entity); return $dataModel; }