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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.