मैं विस्तार विशेषताओं का उपयोग करके अपने सिर को लपेटना चाहूंगा, उदाहरण के लिए उद्धरण आइटम।
Magento 1 में सेटअप वर्ग का उपयोग करके ऐसी इकाई में एक कस्टम विशेषता जोड़ने में कोई समस्या नहीं है, यह वह नहीं है जो यह सवाल है।
इस समय जादू मुझे अभिभूत कर देता है जब मैं एक ऐसी विशेषता को उजागर करना चाहता हूं जिसे संस्थाओं द्वारा एक्सटेंशन एक्सटेंशन के रूप में एपीआई के माध्यम से जोड़ा गया था।
अद्यतन : मुझे पता है कि नियमित कारखाने कैसे उत्पन्न होते हैं। यह प्रश्न उन विशेष कारखानों के बारे में है जो उत्पन्न विस्तार विशेषता इंटरफेस के लिए उत्पन्न कार्यान्वयन को तत्काल करते हैं।
यहां मैं काम करने के लिए कदम उठाता हूं। मैं इन्हें जोड़ रहा हूं ताकि जो कोई भी उत्तर देने का प्रयास करे, उन्हें उन विवरणों में जाने की आवश्यकता न हो।
मेरा प्रश्न है कैसे या क्यों यह काम करता है।
एक इकाई एपीआई के माध्यम से एक एक्सटेंशन विशेषता को उजागर करने के लिए कदम:
etc/extension_attributes.xml
इकाई इंटरफ़ेस में विशेषता को जोड़ता है बनाएँ- संस्थाओं के
ExtensionAttributes
उदाहरण के लिए विशेषता मान जोड़ने के लिए एक प्लगइन बनाएं ।
दूसरा बिंदु करने के लिए, संस्थाओं को ExtensionAttributes
उदाहरण की आवश्यकता है। इस कारण से प्लगइन एक कारखाने पर निर्भर करता है, जिसे ऑब्जेक्ट मैनेजर DI के माध्यम से आपूर्ति करता है।
उद्धरण आइटम के लिए उदाहरण Magento\Quote\Api\Data\CartItemExtensionFactory
का उपयोग करना होगा।
मुझे लगता है कि इस कारखाने का प्रकार किसी भी तरह से पीढ़ी के जादू के लिए ट्रिगर होना चाहिए।
Magento तब \Magento\Quote\Api\Data\CartItemExtensionInterface
सभी एक्सटेंशन विशेषताओं के लिए बसने और पाने वालों के साथ मिलान इंटरफ़ेस उत्पन्न करता है ।
हालाँकि, यह उस इंटरफ़ेस के लिए ठोस कार्यान्वयन उत्पन्न नहीं करता है। पट्टे पर PHPStorm इसे नहीं देख रहा है।
मैगेंटो उस जानकारी को कैसे इकट्ठा करता है जो उसे कक्षा उत्पन्न करने के लिए चाहिए? जेनरेट किए गए इंटरफ़ेस तरीकों को एक ठोस उदाहरण पर कैसे कहा जा सकता है? क्या यह ऐसा वर्ग है जो केवल स्मृति में उत्पन्न होता है?
मुझे खुशी है कि यह काम करता है, लेकिन यह वास्तव में संतोषजनक नहीं है। एक्सटेंशन द्वारा स्वचालित रूप से बनाई गई विशेषताओं का उपयोग करने के लिए Magentos क्षमता इसकी सफलता का एक प्रमुख कारक है। मॉड्यूल डेवलपर के रूप में, मेरा मानना है कि मुझे पूरी प्रक्रिया की गहन समझ की आवश्यकता है।
क्या मेरे पास ऐसा समय होगा जब मैं इसे स्वयं खोद लूंगा, लेकिन अगर मैं सिर्फ स्पष्टीकरण प्राप्त कर सकता हूं तो मैं पसंद करूंगा।
अद्यतन 2 : के माध्यम से पढ़ने के लिए थोड़ा समय लिया \Magento\Framework\Api\Code\Generator\ExtensionAttributesInterfaceGenerator
और \Magento\Framework\Api\Code\Generator\ExtensionAttributesGenerator
। अब मुझे कम से कम एक विचार है कि क्या चल रहा है। अगर कोई मुझे नहीं मारता है तो मैं एक बिंदु पर पूरी प्रक्रिया का वर्णन लिखूंगा, क्योंकि मुझे लगता है कि यह एक उपयोगी संदर्भ होगा।