Magento2 में extension_attributes का उपयोग कैसे करें


15

क्या कोई है जो मुझे extension_attributesMagento2 में उपयोग करने के बारे में एक उदाहरण दे सकता है ?



1
हां, मैंने किया था, लेकिन यह मेरे लिए इतना स्पष्ट नहीं था
फीनिक्स128_रीकॉर्डो

जवाबों:


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 इस वर्ग में saveAddressInformation विधि के लिए एक params के रूप में \ Magento \ Checkout \ Api \ Data \ ShippingInformationInterface का उपयोग करें। तो आप निम्नलिखित तरीके से पहुँच सकते हैं:


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

अधिक जानकारी के लिए (Magento 2 आधिकारिक दस्तावेज)

यहाँ एक उदाहरण है:

extension_attributes

एक्सटेंशन अटेंड करता है मूल्य

[अपडेट करें]

आप सेट कर सकते हैं extension_attributes setExtensionAttributes विधि द्वारा । निम्न वर्ग एक उदाहरण है: यहां क्लिक करें


तो क्या setExtensionAttributes के लिए है?
फीनिक्स128_रीकॉर्डो

मैंने वास्तविक उदाहरण के साथ अद्यतन किया
सोहेल राणा

महान, लेकिन एक बात यहां याद आ रही है: वास्तव में एक्सटेंशन विशेषताएँ कहाँ संग्रहीत हैं? क्या मुझे विशेषताओं को सहेजने और पुनः प्राप्त करने के लिए कोड प्रदान करना होगा या क्या Magento हैंडल कर सकता है (जैसे कस्टम विशेषताओं के साथ)?
मार्टिन विकमैन

क्या मैं इसे सही ढंग से समझता हूं कि extension_attributesकाम करने के लिए प्लगइन्स अनिवार्य हैं ? उदाहरण के लिए, क्या मुझे हमेशा afterLoadग्राहकों के लिए एक प्लगइन जोड़ना होगा अगर मैं ग्राहकों के लिए एक कस्टम विशेषता रखना चाहता हूं? मेरे लिए थोड़ा
उपर की

1
@MartinWickman हाँ यह डेवलपर की जिम्मेदारी है कि वह एक्सटेंशन एट्रिब्यूट डेटा को पुनः प्राप्त करने और जारी रखने के लिए तर्क को लागू करे। अवधारणा यह है, आपके पास अपने मॉड्यूल द्वारा उत्पाद प्रविष्टियों के लिए संभवतः कुछ जटिल डेटा पेश किए गए हैं और यह डेटा एक या एक से अधिक डेटाबेस तालिकाओं या किसी अन्य डेटा स्रोत से आ सकता है, इससे कोई फर्क नहीं पड़ना चाहिए। प्लगइन प्रणाली का उपयोग करके, लोड करने के लिए ProductRepository के तरीकों को लक्षित करें (जैसे, afterGet, afterGetList)। यहां, आप अपना डेटा (जहां से भी) प्राप्त करते हैं और इसे Entity के ExtensionAttributes में जोड़ते हैं। यह कठिन लग रहा है, लेकिन बहुत लचीला और शक्तिशाली है।
जॉन हॉल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.