Что не так, когда я попытался вставить пользовательский атрибут программно? - PullRequest
0 голосов
/ 15 января 2019

У меня есть следующий код:

<?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 тоже.

Что я делаю не так?Если требуется дополнительная конфигурация, пожалуйста, прокомментируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...