यह कई जवाबों के साथ एक पुराना सवाल है जो काम करता है, हालांकि मैंने फैले हुए घटकों की आवश्यकता के बिना Magento प्रदान करता है (2.1.0 के रूप में) का उपयोग कर एक समाधान खोजा है। चूंकि कई प्रश्नों को डुप्लिकेट के रूप में चिह्नित किया गया है और यहां निर्देशित किया गया है मैंने सोचा कि इस विकल्प पर कुछ जानकारी प्रदान करना फायदेमंद होगा।
सभी प्रकार के तत्व यूआई घटक जो विस्तार करते Magento_Ui/js/form/element/abstract.jsहैं switcherConfig, उन उद्देश्यों के लिए एक सेटिंग उपलब्ध है जैसे तत्वों को छिपाना / दिखाना और साथ ही अन्य क्रियाएं। switcherघटक पर पाया जा सकता Magento_Ui / js / प्रपत्र / स्विचर उत्सुक के लिए। आप इसका उदाहरण बिक्री_रूले_फॉर्म.एक्सएमएल और कैटलॉग_रूले_फॉर्म.एक्सएमएल में इस्तेमाल कर सकते हैं । बेशक यदि आप अपने स्वयं के कस्टम घटक का उपयोग कर रहे हैं तो आप अभी भी इसका उपयोग कर सकते हैं जब तक कि आपका घटक अंततः विस्तारित हो जाता है abstractजो प्रश्न में दिए गए उदाहरण कोड के आधार पर ऐसा प्रतीत होता है।
अब मूल प्रश्न का उत्तर देने के लिए अधिक विशिष्ट उदाहरण के लिए।
में Namespace/ModuleName/view/adminhtml/ui_component/your_entity_form.xmlआप बस जोड़ने की जरूरत क्षेत्र के लिए निम्न settingsकि नियंत्रित करने (यानी क्षेत्र है कि निर्धारित करता है जो खेतों छिपे हुए हैं / दृश्य) करता है। आपके उदाहरण में यह होगा field1।
<field name="field1">
<argument name="data" xsi:type="array">
...
</argument>
<settings>
<switcherConfig>
<rules>
<rule name="0">
<value>2</value>
<actions>
<action name="0">
<target>your_entity_form.your_entity_form.entity_information.field2Depend1</target>
<callback>show</callback>
</action>
<action name="1">
<target>your_entity_form.your_entity_form.entity_information.field3Depend1</target>
<callback>hide</callback>
</action>
</actions>
</rule>
<rule name="1">
<value>3</value>
<actions>
<action name="0">
<target>your_entity_form.your_entity_form.entity_information.field2Depend1</target>
<callback>hide</callback>
</action>
<action name="1">
<target>your_entity_form.your_entity_form.entity_information.field3Depend1</target>
<callback>show</callback>
</action>
</actions>
</rule>
</rules>
<enabled>true</enabled>
</switcherConfig>
</settings>
</field>
चलो इसे थोड़ा नीचे तोड़ो। switcherघटक की एक सरणी में शामिल है rulesजो हम यहाँ निर्मित कर रहे हैं है। प्रत्येक <rule>का एक नाम है जो इस उदाहरण में एक संख्या है। यह नाम इस आइटम के लिए सरणी कुंजी / अनुक्रमणिका है। हम सरणी अनुक्रमित के रूप में संख्याओं का उपयोग कर रहे हैं। स्ट्रिंग्स भी काम करना चाहिए, लेकिन मैंने इस सिद्धांत का परीक्षण नहीं किया है ।
अद्यतन - जैसा कि टिप्पणियों में @ChristopheFerreboeuf द्वारा उल्लेख किया गया है, यहां काम नहीं करने के लिए तार। ये सरणियाँ हैं और इन्हें 0स्ट्रिंग या 1 से शुरू करना चाहिए ।
प्रत्येक के अंदर ruleहम दो तर्क देते हैं।
value- यह वह मूल्य है field1जिसके actionsनीचे परिभाषित होना चाहिए ।
actions- यहाँ हम एक और सरणी है। जब इस नियम की शर्तों को पूरा किया जाता है तो ये ट्रिगर किए जाने वाले कार्य हैं। फिर से, प्रत्येक actionका नाम केवल उस आइटम का सरणी इंडेक्स / कुंजी है।
अब प्रत्येक के actionपास दो तर्क हैं (एक वैकल्पिक 3 के साथ)।
target- यह वह तत्व है जिसे आप इस कार्रवाई के तहत हेरफेर करना चाहते हैं। यदि आप इस बात से परिचित नहीं हैं कि मैगेंटो में ui_component तत्व नाम कैसे लिखे गए हैं, तो आप एलन स्टॉर्म के लेख को देख सकते हैं । यह मूल रूप {component_name}.{component_name}.{fieldset_name}.{field_name}से इस उदाहरण में कुछ है ।
callback- यहाँ उपर्युक्त पर कार्रवाई की जानी है target। यह कॉलबैक एक फ़ंक्शन होना चाहिए जो लक्षित लक्ष्य पर उपलब्ध है। हमारे उदाहरण का उपयोग करता है hideऔर show। यह वह जगह है जहाँ आप उपलब्ध कार्यक्षमता पर विस्तार करना शुरू कर सकते हैं। catalog_rule_form.xmlउदाहरण मैंने पहले का उपयोग करता है उल्लेख किया setValidationहै, तो आप एक अलग उदाहरण देखना चाहते हैं।
- आप यह भी जोड़ सकते हैं
<params>किसी भी करने के लिए actionकि उनके लिए कॉल। आप इसे catalog_rule_form.xmlउदाहरण में भी देख सकते हैं ।
अंत में अंदर की अंतिम वस्तु switcherConfigहै <enabled>true</enabled>। यह बहुत सीधे आगे होना चाहिए, यह हमारे द्वारा कार्यान्वित स्विचर कार्यक्षमता को सक्षम / अक्षम करने के लिए एक बूलियन है।
और हम कर रहे हैं। इसलिए आपको जो देखना चाहिए उसके ऊपर दिए गए उदाहरण का उपयोग करते हुए फ़ील्ड field2Depend1प्रदर्शित किया जाता है यदि आप मूल्य 2पर एक विकल्प चुनते हैं field1, और field3Depend1यदि आप मूल्य के साथ एक विकल्प चुनते हैं तो प्रदर्शित होता है 3।
मैंने केवल hideऔर showआवश्यक फ़ील्ड का उपयोग करके इस उदाहरण का परीक्षण किया है और यह सत्यापन के लिए दृश्यता को ध्यान में रखता है। दूसरे शब्दों में, यदि field2Depend1आवश्यक हो तो दिखाई देने पर ही इसकी आवश्यकता होगी। इसके लिए आगे के विन्यास की आवश्यकता नहीं है।
आशा है कि यह किसी और अधिक समाधान की तलाश में किसी के लिए कुछ मदद प्रदान करता है।