Ist es möglich, den Produktattributtyp in Magento 2 zu ändern?


7

Ich habe ein Attribut programmgesteuert erstellt und den Eingabetyp des Attributs Multi Select festgelegt.

Jetzt möchte ich diesen Attributeingabetyp Multi Select in Dropdown ändern .

Ist es möglich? Wenn ja, wie kann ich das ändern?

Antworten:


6

Verwenden Sie den folgenden Code von upgradeData:

<?php

namespace Test\Custom\Setup;

use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\UpgradeDataInterface;

class UpgradeData implements UpgradeDataInterface
{

    public function __construct(EavSetupFactory $eavSetupFactory)
    {
       $this->eavSetupFactory = $eavSetupFactory;
    }


    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    { 
        /** @var EavSetup $eavSetup */
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

        if (version_compare($context->getVersion(), '2.0.2', '<')) {

            $entityType = $eavSetup->getEntityTypeId('catalog_product');

            $eavSetup->updateAttribute($entityType, 'mytest', 'frontend_input','select', null);
            $eavSetup->updateAttribute($entityType, 'mytest', 'used_in_product_listing' , true, null);


        }
    }
}

Ändern Sie mytestmit Ihrem Attributcode im obigen Code. Wenn Sie ein Problem haben, lassen Sie es mich bitte wissen.


0

Führen Sie das upgradeDataSkript mit Ihrem vorhandenen "Attributcode" als Bezeichner aus.

Ich habe den Eingabetyp test_attribute6als Kennung für das vorhandene Attribut wie unten beschrieben aktualisiert .

    $eavSetup->addAttribute(
        \Magento\Catalog\Model\Product::ENTITY,
        'test_attribute6',
        [
            'type' => 'int',
            'backend' => 'dropdown',
            'frontend' => 'dropdown',
            'label' => 'Test Attribute6',
            'input' => 'dropdown',
            'class' => '',
            'source' => '',
            'global' => \Magento\Catalog\Model\ResourceModel\Eav\Attribute::SCOPE_GLOBAL,
            'visible' => true,
            'required' => false,
            'user_defined' => true,
            'default' => 0,
            'searchable' => false,
            'filterable' => false,
            'comparable' => false,
            'visible_on_front' => false,
            'used_in_product_listing' => true,
            'unique' => false,
            'apply_to' => ''
        ]
    );

0

Der folgende Code aktualisiert den Attributtyp "Attributname" in der Dropdown-Liste.

           $customerSetup->updateAttribute(
                 \Magento\Customer\Model\Customer::ENTITY,
                 'attribute_name',    
                 'frontend_input',
                 'select'
             );

         $customerSetup->updateAttribute(
                 \Magento\Customer\Model\Customer::ENTITY,
                 'attribute_name',    
                 'source_model',
                 'Modulenamespace\Modulename\Model\Config\Source\Options'
             );
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.