Magento 2: добавление логического атрибута продукта с использованием патча данных

В этом сообщении блога мы погрузимся в мир Magento 2 и рассмотрим различные методы добавления логического атрибута продукта с помощью исправления данных. Мы рассмотрим пошаговые инструкции, предоставим примеры кода и используем разговорный язык, чтобы сделать процесс более доступным. Итак, начнём!

Метод 1. Использование специального модуля

  1. Создайте новый пользовательский модуль, следуя рекомендациям по разработке модулей Magento 2.
  2. Определите новый файл InstallData.php в каталоге установки вашего модуля.
  3. В файле InstallData.php реализуйте метод install(), чтобы создать новый патч данных.
  4. Внутри метода install()используйте Magento\Catalog\Setup\CategorySetupFactory, чтобы получить экземпляр CategorySetup.
  5. Используйте экземпляр CategorySetup, чтобы добавить логический атрибут к нужному типу объекта продукта (например, Catalog_product).

Пример кода:

<?php
namespace Vendor\Module\Setup;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
class InstallData implements InstallDataInterface
{
    private $categorySetupFactory;
    public function __construct(CategorySetupFactory $categorySetupFactory)
    {
        $this->categorySetupFactory = $categorySetupFactory;
    }
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $installer = $setup;
        $installer->startSetup();
        $categorySetup = $this->categorySetupFactory->create(['setup' => $installer]);
        $categorySetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'your_attribute_code',
            [
                'type' => 'int',
                'label' => 'Your Attribute Label',
                'input' => 'boolean',
                'source' => \Magento\Eav\Model\Entity\Attribute\Source\Boolean::class,
                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                'visible' => true,
                'required' => false,
                'user_defined' => true,
                'default' => '0',
                'group' => 'General',
                'sort_order' => 100,
            ]
        );
        $installer->endSetup();
    }
}

Метод 2: использование сценария UpgradeData

  1. Создайте новый файл UpgradeData.php в каталоге установки вашего пользовательского модуля.
  2. Реализуйте метод upgrade(), чтобы создать новый патч данных.
  3. Внутри метода upgrade()используйте Magento\Catalog\Setup\CategorySetupFactory, чтобы получить экземпляр CategorySetup.
  4. Используйте экземпляр CategorySetup, чтобы добавить логический атрибут к нужному типу сущности продукта.

Пример кода:

<?php
namespace Vendor\Module\Setup;
use Magento\Catalog\Setup\CategorySetupFactory;
use Magento\Framework\Setup\UpgradeDataInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
class UpgradeData implements UpgradeDataInterface
{
    private $categorySetupFactory;
    public function __construct(CategorySetupFactory $categorySetupFactory)
    {
        $this->categorySetupFactory = $categorySetupFactory;
    }
    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $installer = $setup;
        $installer->startSetup();
        $categorySetup = $this->categorySetupFactory->create(['setup' => $installer]);
        $categorySetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'your_attribute_code',
            [
                'type' => 'int',
                'label' => 'Your Attribute Label',
                'input' => 'boolean',
                'source' => \Magento\Eav\Model\Entity\Attribute\Source\Boolean::class,
                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                'visible' => true,
                'required' => false,
                'user_defined' => true,
                'default' => '0',
                'group' => 'General',
                'sort_order' => 100,
            ]
        );
        $installer->endSetup();
    }
}

Добавить логический атрибут продукта в Magento 2 можно различными способами. В этом сообщении блога мы рассмотрели два популярных подхода с использованием специального модуля и сценария обновления данных. Следуя предоставленным примерам кода и пошаговым инструкциям, вы можете легко добавлять логические атрибуты в свой магазин Magento 2. Улучшение атрибутов вашего продукта обеспечит лучший контроль и гибкость в управлении вашей платформой электронной коммерции.