Bu durumda uzantı nitelikleri mekanizması kullanılmalıdır. Temel API'lerin 3. taraf modüller tarafından genişletilmesine izin verir. Yeni uzantı özelliğini etkinleştirmek için genel adımlar:
- Uzatma özelliğini resmi dokümanlarda açıklandığı şekilde bildirin . Silindikten
var
ve çalıştırıldıktan sonra <project_root>/bin/magento setup:di:compile
, bu yeni özellik için karşılık gelen ayarlayıcı ve alıcı görünmelidir \Magento\Customer\Api\Data\GroupExtensionInterface
(bu arayüz otomatik olarak oluşturulur)
- İçin Yaz eklentileri
\Magento\Customer\Api\GroupRepositoryInterface::save
, \Magento\Customer\Api\GroupRepositoryInterface::getById
(ve gerektiğinde başka bir hizmet yöntemleri) kurtarmak için / yük Yeni bir öznitelik. Bir uzantı geliştiricisi olarak, bu özelliğin nerede depolanması gerektiğini yalnızca siz bilirsiniz, herhangi bir tablo olabilir. \Magento\Downloadable\Model\Plugin\AroundProductRepositorySave::aroundSave
Örnek olarak bakın
- Bu özelliği koleksiyonda görünür hale getirmeniz gerekiyorsa (aranabilir / filtrelenebilir hale getirmek için),
join
düğümü bildirin . Değilse, bunu atla
- Özel özelliğinize şu şekilde uygulanır:
$customerGroup->getExtensionAttributes()->getMyAttribute()
burada customerGroup
uygulanır \Magento\Customer\Api\Data\GroupInterface
. setMyAttribute()
de kullanılabilir
Aşağıda, konulması gereken yapılandırma örneği verilmiştir. 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>