मेरे मन में सवाल है कि एक्सटेंशन एट्रिब्यूट्स और कस्टम एट्रिब्यूट्स में क्या अंतर है ?
यहाँ कोई भी जो मुझे कुछ विचार प्रदान कर सकता है?!
मेरे मन में सवाल है कि एक्सटेंशन एट्रिब्यूट्स और कस्टम एट्रिब्यूट्स में क्या अंतर है ?
यहाँ कोई भी जो मुझे कुछ विचार प्रदान कर सकता है?!
जवाबों:
कस्टम विशेषताएँ एक इकाई का वर्णन करने के लिए जोड़े गए गुण हैं, जैसे कि उत्पाद विशेषताएँ, ग्राहक विशेषताएँ आदि। ये ईएवी विशेषताओं के सबसेट हैं।
दूसरी ओर एक्सटेंशन विशेषताओं का उपयोग आमतौर पर अधिक जटिल डेटा प्रकारों के लिए किया जाता है जैसे कि कस्टम बाहरी तालिका से एक इकाई में अतिरिक्त जटिल डेटा जोड़ना।
सीधे शब्दों में कहें, कस्टम विशेषताएँ ईएवी मानकों के अनुरूप होती हैं जबकि एक्सटेंशन विशेषताओं का उपयोग अधिक जटिल डेटा के लिए किया जाता है जिसे कस्टम विशेषताएँ नहीं संभाल सकती हैं।
कस्टम विशेषताएँ एक व्यापारी की ओर से जोड़ी गई हैं। उदाहरण के लिए, एक व्यापारी को 'customizeable' नामक उत्पाद इकाई में कस्टम विशेषताओं को जोड़ने की आवश्यकता हो सकती है जिसमें वह जानकारी सहेजना चाहता है कि यह उत्पाद 3rd पार्टी से अनुकूलित किया जाएगा या नहीं।
कस्टम और एक्सटेंशन दोनों विशेषताओं में थोड़ी हद तक समान कार्यक्षमता (डेटा रखने के लिए) है, लेकिन कस्टम विशेषताओं और एक्सटेंशन विशेषताओं की कार्यक्षमता के बीच काफी अंतर है। जैसे
हम किसी भी अन्य 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 जैसा कि नाम से पता चलता है कि पीके दूसरा टेबल होगा जिसके खिलाफ हम रिकॉर्ड चाहते हैं। फ़ील्ड टैग के अंतर्गत आप अपने सभी आवश्यक फ़ील्ड जोड़ सकते हैं जो वास्तव में आप डेटा प्राप्त करना चाहते हैं
एक्सटेंशन विशेषता प्रमाणीकरण: आप टैग का उपयोग करके इस विशेष एक्सटेंशन विशेषता मान को प्रतिबंधित कर सकते हैं यह समझने के लिए कि यह एक उदाहरण है। मान लें कि हमारे पास उत्पादों के लिए एक से अधिक एक्सटेंशन विशेषताएँ हैं और उनमें से एक कहते हैं कि 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 :: कैटलिनवेंट्री अनुमति है, जबकि logo_size पर इस पर कोई शर्त नहीं है।
इसलिए अब यदि आपको उत्पाद वस्तु मिलती है (कभी एपी या वेब के माध्यम से) तो क्या वर्तमान उपयोगकर्ता के पास कैटलिनवेंट्री के लिए अनुमति है, उसे केवल स्टॉक_इटीम्स मान मिलेगा।
इस प्रश्न के दायरे से बाहर है, लेकिन एक नज़र है कि आप निम्नलिखित लिंक में custom_extension का उपयोग करके बहुत सरल तरीके से विशेषता कैसे बनाएंगे: extension_attributes कैसे बनाएँ