Antworten:
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.
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' => ''
]
);
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'
);