Bu, işe yarayan birden fazla yanıtı olan eski bir sorudur, ancak Magento'nun bileşenlerini genişletmeye gerek kalmadan (2.1.0'dan itibaren) sağladığı şeyi kullanarak bir çözüm keşfettim. Birden fazla soru yinelenen ve burada yönlendirildiği için, bu seçenek hakkında bazı bilgiler vermenin yararlı olacağını düşündüm.
Uzatmak Tüm form elemanı ui bileşenleri Magento_Ui/js/form/element/abstract.jsbir var switcherConfigelemanlarının yanı sıra diğer eylemleri gösteren / böyle gizleme gibi amaçlar için ayar mevcut. switcherBileşen bulunabilir Magento_Ui / js / form / değiştiricinin merak için. Bunun satışlarını sales_rule_form.xml ve catalog_rule_form.xml dosyalarında bulabilirsiniz . Tabii ki kendi özel bileşeninizi zaten kullanıyorsanız, bileşeniniz sonunda abstractsoruda verilen örnek koda dayalı olarak görünen durumda olduğu sürece bunu yine de kullanabilirsiniz .
Şimdi orijinal soruyu cevaplamak için daha spesifik bir örnek.
İçinde Namespace/ModuleName/view/adminhtml/ui_component/your_entity_form.xmlsadece settingskontrol yapan alanlara (yani hangi alanların gizli / görünür olduğunu belirleyen alan) aşağıdakileri eklemeniz yeterlidir . Örneğinizde bu olurdu 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>
Biraz parçalayalım. switcherBileşen dizisi içeriyor rulesbiz burada yapıyolar şeydir. Her <rule>birinin bu örnekte bir sayı olan bir adı vardır. Bu ad, bu öğenin dizi anahtarı / dizinidir. Sayıları dizi dizini olarak kullanıyoruz. Dizeler de çalışmalı ama bu teoriyi test etmedim .
GÜNCELLEME - @ChristopheFerreboeuf tarafından yorumlarda belirtildiği gibi, burada çalışmayan dizeler. Bunlar dizilerdir ve 0dizelerle veya 1 ile başlamalıdır .
Her birinin içinde ruleiki argüman geçiyoruz.
value- Bu, aşağıda tanımlanan değeri field1tetiklemesi gereken değerdir actions.
actions- Burada başka bir dizimiz var. Bunlar, bu kuralın koşulları yerine getirildiğinde tetiklenecek eylemlerdir. Yine, her birinin actionadı yalnızca o öğenin dizi dizini / anahtarıdır.
Şimdi her ikisinin actionde iki argümanı var (isteğe bağlı 3.).
target- Bu, bu eylem altında manipüle etmek istediğiniz unsurdur. Magento'da ui_component eleman adlarının nasıl oluşturulduğunu bilmiyorsanız Alan Storm'un makalesine göz atabilirsiniz . Temel {component_name}.{component_name}.{fieldset_name}.{field_name}olarak bu örnekteki gibi bir şey .
callback- Yukarıda belirtilenler için yapılacak işlem target. Bu geri arama, hedeflenen öğede bulunan bir işlev olmalıdır. Örneğimiz hideve kullanır show. Bu, kullanılabilir işlevselliği genişletmeye başlayabileceğiniz yerdir. Daha catalog_rule_form.xmlönce bahsettiğim setValidationörnek, farklı bir örnek görmek istiyorsanız kullanır .
- Bunları
<params>gerektiren herhangi birine de ekleyebilirsiniz action. Bunu catalog_rule_form.xmlörnekte de görebilirsiniz.
Nihayet son öğe içeride switcherConfigolduğunu <enabled>true</enabled>. Bu oldukça basit olmalı, yeni uyguladığımız değiştirici işlevini etkinleştirmek / devre dışı bırakmak için bir Boole.
Ve işimiz bitti. Gördüğünüz gereken yukarıdaki örneği kullanarak alandır field2Depend1Eğer değerle bir seçenek belirleyin görüntülenir 2üzerinde field1ve field3Depend1sen değerle bir seçenek belirleyin görüntülenir 3.
Bu örneği sadece hideve showgerekli bir alanda kullanarak test ettim ve doğrulama için görünürlüğü dikkate alıyor gibi görünüyor. Başka bir deyişle, gerekirse field2Depend1yalnızca görünür olduğunda gereklidir. Bunun çalışması için daha fazla yapılandırmaya gerek yoktur.
Umarım bu daha hazır bir çözüm arayan herkes için biraz yardım sağlar.