Mekanisme atribut ekstensi harus digunakan dalam kasus ini. Ini memungkinkan perluasan API inti oleh modul pihak ke-3. Langkah umum untuk mengaktifkan atribut ekstensi baru:
- Nyatakan atribut ekstensi seperti yang dijelaskan dalam dokumen resmi . Setelah membersihkan
var
dan menjalankan <project_root>/bin/magento setup:di:compile
, setter dan pengambil yang sesuai untuk atribut baru ini akan muncul di \Magento\Customer\Api\Data\GroupExtensionInterface
(antarmuka ini dihasilkan secara otomatis)
- Tulis plugins untuk
\Magento\Customer\Api\GroupRepositoryInterface::save
, \Magento\Customer\Api\GroupRepositoryInterface::getById
(dan metode layanan lain yang diperlukan) untuk menyimpan / memuat atribut baru. Sebagai pengembang ekstensi, hanya Anda yang tahu di mana atribut ini harus disimpan, mungkin tabel apa saja. Lihat \Magento\Downloadable\Model\Plugin\AroundProductRepositorySave::aroundSave
sebagai contoh
- Jika Anda perlu membuat atribut ini terlihat dalam koleksi (untuk membuatnya dapat dicari / difilter), nyatakan
join
simpul. Jika tidak maka lewati saja ini
- Akses atribut khusus Anda sebagai:, di
$customerGroup->getExtensionAttributes()->getMyAttribute()
mana customerGroup
mengimplementasikan \Magento\Customer\Api\Data\GroupInterface
. setMyAttribute()
bisa digunakan juga
Di bawah ini adalah contoh konfigurasi yang harus dimasukkan VendorName/ModuleName/etc/extension_attributes.xml
<?xml version="1.0"?>
<config>
<extension_attributes for="Magento\Customer\Api\Data\GroupInterface">
<!--Data interface can be used as a type of attribute, see example in CatalogInventory module-->
<attribute code="name_of_attribute" type="string">
<resources>
<resource ref="VendorName_ModuleName::someAclNode"/>
</resources>
<!--Join is optional, only if you need to have added attribute visible in groups list-->
<join reference_table="table_where_attribute_is_stored" reference_field="group_id_field_in_that_table" join_on_field="group_id">
<field>name_of_added_attribute_field_in_that_table</field>
</join>
</attribute>
</extension_attributes>
</config>