22 class Attribute extends \Magento\Eav\Model\Entity\Attribute\AbstractAttribute implements
23 \Magento\Framework\DataObject\IdentityInterface
110 \
Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
145 $this->_localeDate = $localeDate;
146 $this->_localeResolver = $localeResolver;
160 return \Magento\Eav\Model\Entity\Attribute\Backend\Time\Created::class;
163 return \Magento\Eav\Model\Entity\Attribute\Backend\Time\Updated::class;
166 return \Magento\Eav\Model\Entity\Attribute\Backend\Store::class;
169 return \Magento\Eav\Model\Entity\Attribute\Backend\Increment::class;
175 return parent::_getDefaultBackendModel();
186 return \Magento\Eav\Model\Entity\Attribute\Source\Store::class;
188 return parent::_getDefaultSourceModel();
214 'entity_attribute.attribute_id',
217 if (count($filteredAttributes) > 0) {
219 $this->setEntityAttributeId($filteredAttributes->getFirstItem()->getEntityAttributeId());
235 if (isset($this->_data[
'attribute_code']) && $this->reservedAttributeList->isReservedAttribute($this)) {
238 'The attribute code \'%1\' is reserved by system. Please try another attribute code',
239 $this->_data[
'attribute_code']
248 $this->_data[
'attribute_code']
250 $this->_data[
'attribute_code'],
252 [
'max' => self::ATTRIBUTE_CODE_MAX_LENGTH]
257 'The attribute code needs to be %1 characters or fewer. Re-enter the code and try again.',
258 self::ATTRIBUTE_CODE_MAX_LENGTH
264 $hasDefaultValue = (string)$defaultValue !=
'';
267 $numberFormatter = new \NumberFormatter($this->_localeResolver->getLocale(), \NumberFormatter::DECIMAL);
268 $defaultValue = $numberFormatter->parse($defaultValue);
269 if ($defaultValue ===
false) {
271 __(
'The default decimal value is invalid. Verify the value and try again.')
282 if (!$this->getFrontendModel()) {
287 if ($hasDefaultValue) {
289 $locale = $this->_localeResolver->getLocale();
290 $defaultValue = $this->_localeDate->date($defaultValue, $locale,
false,
false);
291 $this->
setDefaultValue($defaultValue->format(DateTime::DATETIME_PHP_FORMAT));
292 }
catch (\Exception $e) {
293 throw new LocalizedException(
__(
'The default date is invalid. Verify the date and try again.'));
304 return parent::beforeSave();
315 return parent::afterSave();
324 return parent::afterDelete();
394 $field =
'default_value_text';
399 $field =
'default_value_textarea';
403 $field =
'default_value_date';
407 $field =
'default_value_yesno';
436 if (!$this->
getData(
'store_labels')) {
437 $storeLabel = $this->
getResource()->getStoreLabelsByAttributeId($this->
getId());
438 $this->
setData(
'store_labels', $storeLabel);
440 return $this->
getData(
'store_labels');
451 if ($this->
hasData(
'store_label')) {
452 return $this->
getData(
'store_label');
456 if (isset($labels[
$store->getId()])) {
457 return $labels[
$store->getId()];
459 return $this->getFrontendLabel();
471 $groupSortWeight = isset($this->_data[
'attribute_set_info'][$setId][
'group_sort'])
472 ? (float) $this->_data[
'attribute_set_info'][$setId][
'group_sort'] * 1000
474 $sortWeight = isset($this->_data[
'attribute_set_info'][$setId][
'sort'])
475 ? (float) $this->_data[
'attribute_set_info'][$setId][
'sort'] * 0.0001
477 return $groupSortWeight + $sortWeight;
488 return [self::CACHE_TAG .
'_' . $this->
getId()];
500 [
'_localeDate',
'_localeResolver',
'reservedAttributeList',
'dateTimeFormatter']
514 $this->reservedAttributeList =
$objectManager->get(\
Magento\Catalog\Model\Product\ReservedAttributeList::class);
515 $this->dateTimeFormatter =
$objectManager->get(DateTimeFormatterInterface::class);
loadEntityAttributeIdBySet()
_getDefaultBackendModel()
getStoreLabel($storeId=null)
setDefaultValue($defaultValue)
getDefaultValueByInput($type)
getAttributeCodesByFrontendType($type)
__construct(\Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory, AttributeValueFactory $customAttributeFactory, \Magento\Eav\Model\Config $eavConfig, \Magento\Eav\Model\Entity\TypeFactory $eavTypeFactory, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Eav\Model\ResourceModel\Helper $resourceHelper, \Magento\Framework\Validator\UniversalFactory $universalFactory, \Magento\Eav\Api\Data\AttributeOptionInterfaceFactory $optionDataFactory, \Magento\Framework\Reflection\DataObjectProcessor $dataObjectProcessor, \Magento\Framework\Api\DataObjectHelper $dataObjectHelper, \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate, \Magento\Catalog\Model\Product\ReservedAttributeList $reservedAttributeList, \Magento\Framework\Locale\ResolverInterface $localeResolver, DateTimeFormatterInterface $dateTimeFormatter, \Magento\Framework\Model\ResourceModel\AbstractResource $resource=null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection=null, array $data=[])
const ATTRIBUTE_CODE_MAX_LENGTH
getData($key='', $index=null)
setData($key, $value=null)
static is($value, $classBaseName, array $args=array(), $namespaces=array())
getBackendTypeByInput($type)
const ATTRIBUTE_CODE_MIN_LENGTH