답변:
맞춤 속성 은 판매자를 대신하여 추가 된 속성 입니다. 예를 들어 판매자는 'customizeable'이라는 제품 엔터티에 사용자 지정 특성을 추가하여이 제품이 타사에서 사용자 지정되는지 여부를 저장하려는 정보를 저장해야 할 수 있습니다.
사용자 정의 속성과 확장 속성은 모두 데이터를 유지하기 위해 약간의 기능이 동일하지만 사용자 정의 속성과 확장 속성 기능에는 상당한 차이가 있습니다. 예 :
다른 DB 테이블과 결합하여 확장 속성을 가진 추가 검색 기준을 추가 할 수 있습니다. ACL을 추가하여 인증 할 수 있습니다. 조금 자세히 설명하겠습니다.
다음 스 니펫을 살펴보십시오. /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>
확장 속성 검색 : 결합 태그에서 결합하려는 관련 테이블을 정의하고이 테이블에서 데이터를 가져올 수 있습니다. 에서 reference_table 속성이있는 동안 테이블 이름을 지정해야 reference_field이 있는 당신이 당신의 관계를 넣어 기본 키 (이 확장 속성이 예에서 제품처럼 만들 수있는 첫 번째 테이블 키)입니다 / 가입. 이름으로 join_on_field 는 레코드를 원하는 두 번째 테이블 PK가 될 것입니다. 필드 태그 아래에서 실제로 데이터를 얻으려는 모든 필수 필드를 추가 할 수 있습니다
확장 속성 인증 : 태그를 사용하여이 특정 확장 속성 값을 제한 할 수 있습니다 . 이해하기 예를 들어 보겠습니다. 제품에 대해 하나 이상의 확장 속성이 있고 그 중 하나에 extra_special_price라고 말하면 모든 사용자에게 표시하고 싶지 않습니다. 이 속성을 제한 할 수 있습니다. 다음 스 니펫을 살펴보십시오.
<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>
이 예에서 stock_item 속성은 Magento_CatalogInventory :: cataloginventory 권한이있는 사용자로만 제한되며 logo_size에는 조건이 없습니다.
따라서 현재 사용자에게 카탈로그 인벤토리에 대한 권한이 있으면 제품 객체를 (어떻게 든 API를 통해 또는 웹에서) 가져 오면 stock_items 값만 가져옵니다.
이 질문의 범위를 벗어나지 만 매우 간단한 방법으로 다음 링크에서 custom_extension을 사용하여 속성을 작성하는 방법을 살펴보십시오. extension_attributes 작성 방법