Magento 2: Apa perbedaan antara Atribut Ekstensi dan Atribut Kustom?

13

Saya memiliki pertanyaan dalam benak saya apa perbedaan yang tepat antara Atribut Ekstensi dan Atribut Kustom ?

Adakah yang bisa memberikan saya beberapa ide di sini ?!

anonim
sumber
@Amit, Bisakah Anda membantu saya dengan ini ?!
Anonim
Saya tidak yakin 100% mengapa saya tidak menjawab pertanyaan. Tapi sudut pandang saya sama-sama
Amit Bera

Jawaban:

8

Atribut khusus adalah atribut yang ditambahkan untuk menggambarkan suatu entitas, seperti atribut produk, atribut pelanggan, dll. Ini adalah subset dari atribut EAV.

Atribut ekstensi di sisi lain umumnya digunakan untuk tipe data yang lebih kompleks seperti menambahkan data kompleks tambahan ke entitas dari tabel eksternal kustom.

Sederhananya, atribut khusus sesuai dengan standar EAV sedangkan atribut ekstensi digunakan untuk data yang lebih kompleks yang tidak dapat ditangani oleh atribut khusus.

Hungersoft
sumber
5

Atribut khusus adalah yang ditambahkan atas nama pedagang. Misalnya, pedagang mungkin perlu menambahkan atribut khusus ke entitas produk bernama 'dapat disesuaikan' di mana ia ingin menyimpan informasi bahwa produk ini akan dikustomisasi dari pihak ke-3 atau tidak.

Atribut khusus dan ekstensi memiliki fungsionalitas yang sedikit luas sama (untuk menyimpan data) tetapi ada perbedaan yang cukup besar antara atribut khusus & fungsionalitas atribut ekstensi. misalnya

kita dapat menambahkan kriteria pencarian tambahan dengan atribut ekstensi dengan bergabung dengan tabel DB lainnya. Kami dapat mengautentikasi dengan menambahkan ACL di dalamnya. Mari kita jelaskan sedikit detail.

Silakan lihat cuplikan berikut. Anda harus membuat /etc/extension_attributes.xml

 <config>
    <extension_attributes for="Path\To\Interface">
        <attribute code="name_of_attribute" type="datatype">
           <resources>
              <resource ref="permission"/>
           </resources>
           <join reference_table="" reference_field="" join_on_field="">
              <field>field1</field>
           <field>field2</field>
           </join>
        </attribute>
    </extension_attributes>
</config>

Mencari atribut ekstensi: Dalam tag bergabung, Anda dapat menentukan tabel tentang yang Anda inginkan untuk bergabung dan mendapatkan data dari tabel ini. Dalam atribut reference_table Anda harus memberikan nama tabel sementara reference_field akan menjadi kunci utama (kunci tabel pertama yang dibuat atribut atribut ini seperti pada contoh produk ini) tempat Anda meletakkan relasi / bergabung. join_on_field sebagai nama yang menyarankan akan menjadi tabel kedua PK yang ingin kita catat . Di bawah tag bidang Anda dapat menambahkan semua bidang yang diperlukan Anda sebenarnya ingin mendapatkan data

Otentikasi atribut ekstensi: Anda dapat membatasi nilai atribut ekstensi ini dengan menggunakan tag. Untuk memahami ini, mari kita memiliki contoh. Katakanlah kita memiliki lebih dari satu atribut ekstensi untuk produk dan salah satunya mengatakan extra_special_price kami tidak ingin menampilkannya kepada semua pengguna. Kami dapat membatasi atribut ini. Lihatlah cuplikan berikut.

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
    <extension_attributes for="Magento\Catalog\Api\Data\ProductInterface">
        <attribute code="stock_item" type="Magento\CatalogInventory\Api\Data\StockItemInterface">
            <resources>
                <resource ref="Magento_CatalogInventory::cataloginventory"/>
            </resources>
        </attribute>
    </extension_attributes>
<attribute code="logo_size" type="string">           
        </attribute>
</config>

Dalam contoh ini, atribut stock_item dibatasi hanya untuk pengguna yang memiliki izin Magento_CatalogInventory :: cataloginventory sementara logo_size tidak memiliki kondisi di atasnya.

Jadi sekarang jika Anda mendapatkan objek produk (dengan cara apa pun melalui api atau dari web) jika pengguna saat ini memiliki izin untuk katalog katalog dia akan mendapatkan nilai stock_items saja.

Di luar ruang lingkup pertanyaan ini tetapi lihat bagaimana Anda akan membuat atribut menggunakan custom_extension dalam tautan berikut dengan cara yang sangat sederhana: Cara membuat extension_attributes

Hassan Ali Shahzad
sumber