Magento2에서 extension_attributes를 사용하는 방법


답변:


18

고객이 운송을 선택하면 고객이 납품 일을 선택할 수있는 주문 납품 일을 작성한다고 가정하십시오. 따라서 다음과 같은 방법으로 \ Magento \ Checkout \ Api \ Data \ ShippingInformationInterface 에 대한 확장 특성을 만들 수 있습니다.


<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
    <extension_attributes for="Magento\Checkout\Api\Data\ShippingInformationInterface">
        <attribute code="delivery_date" type="string"/>
    </extension_attributes>
</config>

따라서 \ Magento \ Checkout \ Api \ Data \ ShippingInformationInterface 를 di로 사용할 때이 값에 액세스 할 수 있습니다 .

따라서이 경우 Magento \ Checkout \ Model \ ShippingInformationManagement 이 클래스는 \ Magento \ Checkout \ Api \ Data \ ShippingInformationInterface 를 saveAddressInformation 메서드의 매개 변수로 사용합니다. 따라서 다음과 같은 방법으로 액세스 할 수 있습니다.


$extAttributes = $addressInformation->getExtensionAttributes();
$deliveryDate = $extAttributes->getDeliveryDate();

자세한 내용은 (Magento 2 공식 문서)

예를 들면 다음과 같습니다.

extension_attributes

확장 속성 선택 값

[최신 정보]

setExtensionAttributes 메소드로 extension_attributes를 설정할 수 있습니다 . 다음 수업 예입니다 : 여기를 클릭하십시오


그렇다면 setExtensionAttributes는 무엇입니까?
Phoenix128_RiccardoT

실제 예제로 업데이트했습니다
Sohel Rana

훌륭하지만 한 가지가 누락되었습니다. 확장 속성은 정확히 어디에 저장됩니까? 속성을 직접 저장하고 검색하기위한 코드를 제공해야합니까? 또는 Magento가이를 처리 할 수 ​​있습니까 (예 : 사용자 지정 속성)?
Martin Wickman 2016 년

extension_attributes작동 하려면 플러그인이 필수라는 것을 올바르게 이해하고 있습니까? 예를 들어 afterLoad고객 을 위해 맞춤 속성을 사용하려면 고객 을 위해 항상 플러그인을 추가 해야하나요? 나에게 약간의 오버 헤드처럼 보인다 ...
Giel Berkers

1
@MartinWickman 예, 확장 속성 데이터를 검색하고 유지하기위한 로직을 구현하는 것은 개발자의 책임입니다. 개념은 제품 엔터티 용 모듈에서 소개 한 복잡한 데이터가있을 수 있으며이 데이터는 하나 이상의 데이터베이스 테이블 또는 다른 데이터 소스에서 가져온 것일 수 있다는 것입니다. 플러그인 시스템을 사용하여로드 할 ProductRepository의 메소드를 대상으로 지정하십시오 (예 : afterGet, afterGetList). 여기서 데이터를 어디서나 검색하여 엔티티의 ExtensionAttributes에 추가합니다. 이것은 어렵지만 매우 유연하고 강력합니다.
John Hall
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.