이 경우 확장 속성 메커니즘을 사용해야합니다. 타사 모듈에 의해 핵심 API를 확장 할 수 있습니다. 새 확장 속성을 사용하기위한 일반 단계 :
- 공식 문서에 설명 된대로 확장 속성을 선언하십시오 . 을 지우고
var
실행 한 후이 <project_root>/bin/magento setup:di:compile
새 속성에 해당하는 setter 및 getter가 나타납니다 \Magento\Customer\Api\Data\GroupExtensionInterface
(이 인터페이스는 자동 생성됨).
- 대한 쓰기 플러그인
\Magento\Customer\Api\GroupRepositoryInterface::save
, \Magento\Customer\Api\GroupRepositoryInterface::getById
(그리고 필요에 따라 다른 서비스 방법) 저장 /로드 새로운 속성을. 확장 개발자는이 속성을 어디에 저장해야하는지 아는 사람 만있을 수 있습니다. 참조 \Magento\Downloadable\Model\Plugin\AroundProductRepositorySave::aroundSave
예를 들어
- 이 속성을 콜렉션에서 볼 수있게하려면 (검색 가능 / 필터 가능)
join
노드를 선언 하십시오. 그렇지 않다면 그냥 건너 뛰십시오.
- :로 사용자 정의 속성에 액세스
$customerGroup->getExtensionAttributes()->getMyAttribute()
여기서 customerGroup
구현 \Magento\Customer\Api\Data\GroupInterface
. setMyAttribute()
사용할 수 있습니다
아래는 구성의 예입니다 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>