У меня есть следующий код:
<?php
namespace Vendor\Extension\Setup;
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
class InstallData implements InstallDataInterface
{
private $eavSetupFactory;
private $attributeSetFactory;
private $attributeSet;
private $categorySetupFactory;
public function __construct(EavSetupFactory $eavSetupFactory, AttributeSetFactory $attributeSetFactory, CategorySetupFactory $categorySetupFactory )
{
$this->eavSetupFactory = $eavSetupFactory;
$this->attributeSetFactory = $attributeSetFactory;
$this->categorySetupFactory = $categorySetupFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
//creating attribute set
$categorySetup = $this->categorySetupFactory->create(['setup' => $setup]);
$attributeSet = $this->attributeSetFactory->create();
$entityTypeId = $categorySetup->getEntityTypeId(\Magento\Catalog\Model\Product::ENTITY);
$attributeSetId = $categorySetup->getDefaultAttributeSetId($entityTypeId);
$data = [
'attribute_set_name' => 'Medicamento Expira Curta',
'entity_type_id' => $entityTypeId,
'sort_order' => 200,
];
$attributeSet->setData($data);
$attributeSet->validate();
$attributeSet->save();
$attributeSet->initFromSkeleton($attributeSetId);
$attributeSet->save();
//Creating products attributes
$eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'Data de fabricação',
[
'type' => 'varchar',
'label' => 'Data de fabricação', //attr name
'backend' => '',
'input' => 'date',
'wysiwyg_enabled' => false,
'source' => '',
'required' => false,
'sort_order' => 5,
'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
'visible' => true,
'used_in_product_listing' => true,
'visible_on_front' => true,
'attribute_set_id' => 'Expira Curta',
]
);
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'Data de vencimento',
[
'type' => 'varchar',
'label' => 'Data de vencimento', //attr name
'backend' => '',
'input' => 'date',
'wysiwyg_enabled' => false,
'source' => '',
'required' => false,
'sort_order' => 5,
'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
'visible' => true,
'used_in_product_listing' => true,
'visible_on_front' => true,
'attribute_set_id' => 'Expira Curta',
]
);
$setup->endSetup();
}
}
?>
Я хочу создать новый набор атрибутов под названием «Medicamento Expira Curta» и добавить к нему еще 2 атрибута.Но когда я запускаю этот код, модуль переключается на включенный в config.php
, и в таблице setup_module
все в порядке, но ничего не происходит, модуль не сохраняется и не появляется во внешнем интерфейсе ине сохраняется в eav_attribute_set
тоже.
Что я делаю не так?Если требуется дополнительная конфигурация, пожалуйста, прокомментируйте.