Я успешно создал новый атрибут с помощью интерфейса Attribute, но когда я иду и проверяю свой атрибут в бэкэнде magento, раскрывающийся список «Тип ввода каталога для владельца магазина» становится серым. Если я создаю атрибут из бэкэнда, раскрывающийся список не отключается, поэтому пользователь может изменить тип в любое время.
Это код, который создает атрибут с отключенным выпадающим списком:
$attribute = $this->_attributeInterface; // \Magento\Eav\Api\Data\AttributeInterface
$attribute->setEntityTypeId(4);
$attribute->setIsUserDefined(1);
$attribute->setAttributeCode($newAttribute);
$attribute->setDefaultFrontendLabel(strtolower($newAttribute));
$attribute->setFrontendInput('text');
$attribute->setBackendType('varchar');
$attribute->setScope("global");
$attribute->setIsRequired(false);
$attribute->setIsUnique(false);
$attribute->setIsSearchable(false);
$attribute->setIsComparable(false);
$attribute->setIsVisibleOnFront(true);
$attribute->setIsFilterable(false);
$attribute->setUsedInProductListing(false);
$attribute->setIsVisible(true); // ?
// \Magento\Eav\Api\AttributeRepositoryInterface
$this->_attributeRepositoryInterface->save($attribute);
Код, который я использовал с magento 2.1, таков:
$newattribute = $eavsetup->addAttribute('catalog_product', $attributecode, [
'type' => $type,
'backend' => '',
'frontend' => '',
'label' => $label,
'input' => $input,
'class' => '',
'source' => '',
'global' => $scope,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'used_in_product_listing' => false,
'unique' => false,
//'apply_to' => ''
]);
В этом коде для созданного атрибута отображается "Тип ввода каталога для владельца магазина", а не серый, поэтому предыдущая версия работает отлично. Мне нужно переключиться с предыдущей версии, которая вызывает модель напрямую, на новый код, который использует интерфейсы и репозиторий. Я не могу переключиться, пока выпадающее меню не будет отображаться правильно.
Кто-нибудь знает, как это решить?