এটি একাধিক উত্তর সহ একটি পুরানো প্রশ্ন যা কাজ করে, তবে আমি Magento কী সরবরাহকারী উপাদানগুলির প্রযোজনীয়তা ছাড়াই (2.1.0 হিসাবে) যা সরবরাহ করে তা ব্যবহার করে একটি সমাধান আবিষ্কার করেছি। যেহেতু একাধিক প্রশ্নগুলি নকল হিসাবে চিহ্নিত হয়েছে এবং এখানে নির্দেশিত হয়েছে আমি এই বিকল্পটিতে কিছু তথ্য সরবরাহ করা সুবিধাজনক হবে বলে ভেবেছিলাম।
সমস্ত ফর্ম উপাদান ইউআই উপাদানগুলি প্রসারিত করে Magento_Ui/js/form/element/abstract.jsএমন উপাদানগুলির switcherConfigজন্য যেমন লুকানো / দেখানোর পাশাপাশি অন্যান্য ক্রিয়াগুলির জন্য একটি সেটিং উপলব্ধ থাকে। switcherকম্পোনেন্ট পাওয়া যাবে Magento_Ui / JS / ফর্ম / পরিবর্তনকারী জানতে আগ্রহী জন্য। বিক্রয়_rule_form.xML এবং ক্যাটালগ_রুলে_ফর্ম.এক্সএমএল এর ব্যবহারের উদাহরণগুলি আপনি খুঁজে পেতে পারেন । অবশ্যই যদি আপনি ইতিমধ্যে নিজের কাস্টম উপাদান ব্যবহার করছেন তবে আপনি এখনও অবধি এটি ব্যবহার করতে পারবেন যতক্ষণ না আপনার উপাদানটি অবশেষে প্রসারিত হয় 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>একটি নাম রয়েছে যা এই উদাহরণে একটি সংখ্যা। এই নামটি এই আইটেমটির জন্য অ্যারে কী / সূচক। আমরা সংখ্যাগুলি অ্যারে সূচক হিসাবে ব্যবহার করছি। স্ট্রিংগুলিতেও কাজ করা উচিত তবে আমি এই তত্ত্বটি পরীক্ষা করি নি ।
আপডেট - @ ক্রিসটফেরফেরিবোউফ মন্তব্য হিসাবে মন্তব্য করেছেন, এখানে কাজ না করার জন্য স্ট্রিং। এগুলি অ্যারে এবং 0স্ট্রিং বা 1 দিয়ে নয়, শুরু হওয়া উচিত ।
প্রতিটি ভিতরে ruleআমরা দুটি যুক্তি পাস।
value- এটি হ'ল এর মান field1যার actionsনীচে সংজ্ঞায়িত ট্রিগার করা উচিত ।
actions- এখানে আমাদের আরেকটি অ্যারে আছে। এই নিয়মের শর্ত পূরণ করার সময় এগুলি ট্রিগার করা হবে। আবার, প্রত্যেকের actionনাম সেই আইটেমটির অ্যারে সূচক / কী is
এখন প্রত্যেকের actionপাশাপাশি দুটি তর্ক রয়েছে (3rdচ্ছিক তৃতীয় সহ)।
target- এই উপাদানটির মাধ্যমে আপনি যে কৌশলটি পরিচালনা করতে চান এটি এটি। আপনি কীভাবে ui_comp घटक উপাদান নামগুলি ম্যাজেন্টোতে রচিত তা সম্পর্কে আপনি যদি জানেন না তবে আপনি অ্যালান স্টর্মের নিবন্ধটি পরীক্ষা করে দেখতে পারেন । এটি মূলত {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প্রয়োজন হয় তবে এটি দৃশ্যমান হলেই প্রয়োজন হবে। এটির জন্য আরও কনফিগারেশন প্রয়োজন নেই।
আশা করি বাক্সের বাইরে থাকা আরও সলিউশন খুঁজছেন এমন কাউকে এটির জন্য কিছু সহায়তা প্রদান করা হয়েছে।