Magento 2: Tambahkan Atribut Produk Secara Programatis

Jawaban:

34

Ikhtisar Menambahkan Atribut Produk Secara Programatis

  • Langkah 1: Buat file InstallData.php
  • Langkah 2: Tentukan install() metode
  • Langkah 3: Buat atribut khusus

Langkah 1: Buat fileInstallData.php

Kami akan mulai dengan kelas InstallData yang berlokasi di

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

Konten untuk file ini:

<?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;
    }

}

Langkah 2: Tentukan metode install ()

<?php

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

}

Langkah 3: Buat atribut khusus Berikut adalah semua kode baris InstallData.phpuntuk membuat atribut produk secara terprogram.

<?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' => ''
            ]
        );
    }
}

Seperti yang Anda lihat, semua metode addAttribute membutuhkan adalah: Id tipe entitas yang ingin kita tambahkan atribut Nama atribut Sebuah array pasangan nilai kunci untuk mendefinisikan atribut seperti grup, tipe input, sumber, label ...

Setelah selesai, jalankan skrip upgrade setup bin / magento php: upgrade untuk menginstal modul dan atribut sample_attribute produk akan dibuat.

Jika Anda ingin menghapus atribut produk, Anda dapat menggunakan metode removeAttribute alih-alih addAttribute. Akan seperti ini:

EDIT:

untuk uninstall, buat aplikasi / kode / 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');
    }
}

Anda juga dapat mengikuti URL di bawah ini untuk membuat atribut produk khusus.

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

Prakash Patel
sumber
Saya ingin membuat atribut unggah file. Perubahan apa yang harus saya lakukan? mohon panduan
ephemeral
@ephemeral Anda dapat mengubah nilai 'input' => '', Anda dapat membacanya di sini: magento.stackexchange.com/a/116829/2694
Andhi Irawan
Saya harus mengganti 'int' dengan? pada tautan ini saya tidak menemukan untuk mengunggah file :(
ephemeral
Sebagai petunjuk khusus, jangan biarkan bidang 'input' => '' kosong. Ini akan memunculkan kesalahan. magento.stackexchange.com/questions/204420/…
ZFNerd
hai @ Patrak Patel, tanpa installer dapatkah kita membuat atribut produk?
jafar pinjar