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.