Magento 2: додайте атрибут продукту програмно


Відповіді:


34

Огляд програмного додавання атрибутів продукту

  • Крок 1: Створіть файл InstallData.php
  • Крок 2: Визначте install() метод
  • Крок 3: Створіть спеціальний атрибут

Крок 1: Створіть файлInstallData.php

Почнемо з класу InstallData, який знаходиться в

app/code/Mageplaza/HelloWorld/Setup/InstallData.php. 

Вміст цього файлу:

<?php
namespace Mageplaza\HelloWorld\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;

class InstallData implements InstallDataInterface
{
    private $eavSetupFactory;

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

}

Крок 2: Визначте метод install ()

<?php

public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{

}

Крок 3: Створення спеціального атрибута Тут наведено всі коди рядків програми InstallData.phpдля програмного створення атрибуту продукту.

<?php
namespace Mageplaza\HelloWorld\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;

class InstallData implements InstallDataInterface
{
    private $eavSetupFactory;

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

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
        $eavSetup->addAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'sample_attribute',
            [
                'type' => 'int',
                'backend' => '',
                'frontend' => '',
                'label' => 'Sample Atrribute',
                'input' => '',
                'class' => '',
                'source' => '',
                'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
                'visible' => true,
                'required' => true,
                'user_defined' => false,
                'default' => '',
                'searchable' => false,
                'filterable' => false,
                'comparable' => false,
                'visible_on_front' => false,
                'used_in_product_listing' => true,
                'unique' => false,
                'apply_to' => ''
            ]
        );
    }
}

Як бачите, потрібен лише метод addAttribute: ідентифікатор типу об'єкта, якому ми хочемо додати атрибут Ім'я атрибута Масив пар ключових значень для визначення атрибута, такого як група, тип введення, джерело, мітка…

Все готово, запустіть сценарій оновлення php bin / magento setup: оновлення для встановлення модуля і буде створено атрибут продукту sample_attribute.

Якщо ви хочете видалити атрибут продукту, ви можете використовувати метод deleteAttribute замість addAttribute. Буде так:

Редагувати:

для видалення створіть додаток / код / ​​Mageplaza / HelloWorld / Setup / Uninstall.php.

<?php
namespace Mageplaza\HelloWorld\Setup;

use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\UninstallInterface;

class Uninstall implements UninstallInterface
{
    private $eavSetupFactory;

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

    public function uninstall(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
        $eavSetup->removeAttribute(
            \Magento\Catalog\Model\Product::ENTITY,
            'sample_attribute');
    }
}

Також ви можете дотримуватися нижче URL-адреси для створення спеціального атрибута продукту.

URL: https://www.mageplaza.com/magento-2-module-development/magento-2-add-product-attribute-programmatic.html


Я хочу створити атрибут завантаження файлів. Які зміни я повинен зробити? люб’язно керівництво
ефемерний

@ephemeral ви можете змінити значення 'input' => '', прочитати його можна тут: magento.stackexchange.com/a/116829/2694
Andhi Irawan

Я повинен замінити 'int' на? за цим посиланням я не знайшов для завантаження файлу :(
ефемерний

Як особливий натяк, не дозволяйте поле "введення" => "" порожнім. Це призведе до помилки. magento.stackexchange.com/questions/204420/…
ZFNerd

привіт @Prakash Patel, чи не можемо ми встановити атрибут продукту?
jafar pinjar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.