Magento 2: Field ขึ้นอยู่กับ system.xml เมื่อ field ไม่อยู่ในกลุ่มเดียวกัน


10

คุณจะตั้งค่า<depends>สำหรับเขตข้อมูลที่ไม่อยู่ในกลุ่มของเขตข้อมูลเดียวกันได้อย่างไร

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="section" translate="label" type="text" sortOrder="200" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>Name</label>
            <tab>tabname</tab>
            <resource>Namespace_ModuleName::method</resource>
            <group id="group" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>General Configuration</label>
                <field id="field" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
            </group>
            <group id="connection" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Connection Configuration</label>
                <field id="disable_certificate_check" translate="label" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Check</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <depends>
                        <field id="field">1</field>
                    </depends>
                </field>
            </group>
        </section>
    </system>
</config>

คำตอบ:


40

รหัสเขตข้อมูลจากโหนดที่ขึ้นอยู่กับจะต้องมีส่วนกลุ่มและเขตข้อมูลของเขตข้อมูลที่คุณต้องการที่จะพึ่งพา

<depends>
    <field id="section_id/group_id/field_id">1</field>
</depends>

ใช่ลองแบบเดียวกัน แต่เมื่อเลือก "ไม่" จากกลุ่มแรกแล้วซ่อนทั้งสองกลุ่มคุณช่วยอธิบายคำตอบของคุณให้ละเอียดมากขึ้นได้ไหม
Dhrumin

1
@ St3phan เราจะซ่อนกลุ่มทั้งหมดได้อย่างไร
mshakeel

@shakeelฉันไม่ทราบว่ามันสามารถ แต่ให้ฉันมีเวลาน้อยในการทดสอบ
St3phan

1
@ St3phan ทำได้โดยใช้ Javascript (ตอบกลับ) แชร์หากคุณพบวิธีที่เหมาะสม
mshakeel

คุณสามารถใช้รหัส jQuery ของคุณได้
St3phan

1

ซ่อนกลุ่มการกำหนดค่า

สำหรับ magento 2.1.x คุณสามารถใช้ jQuery ต่อไปนี้เพื่อสลับกลุ่มคอนฟิกูเรชันที่ขึ้นต่อกัน:

<comment><![CDATA[
<script type="text/javascript">//<![CDATA[
    require(['jquery'], function(){
        if (jQuery('#field_id').val() == 'value_to_compare') {
            toggleDependantGroups(true);
        }

        jQuery('#field_id').change(function() {
            if (jQuery(this).val() == 'value_to_compare') {
                toggleDependantGroups(true);
            } else {
                toggleDependantGroups(false);
            }
        });

        function toggleDependantGroups(hide=true)
        {
            if (hide) {
                jQuery('#section-id').closest('div.section-config').hide();
                jQuery('#section-id').closest('div.section-config').hide();
                jQuery('#last-visible-section-id').closest('div.section-config').css('border-bottom-width', '0px');
            } else {
                jQuery('#section-id').closest('div.section-config').show();
                jQuery('#section-id').closest('div.section-config').show();
                jQuery('#last-visible-section-id').closest('div.section-config').css('border-bottom-width', '1px');
            }
        }
    });
</script>]]>

แทนที่รหัสในกรณีที่จำเป็น


1
<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <tab id="your_id" translate="label" sortOrder="1000">
            <label>your_label</label>
        </tab>
        <section id="your_id" translate="label" type="text" sortOrder="340" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>your_label</label>
            <tab>your_tab</tab>
            <resource>Your_Module::config</resource>
            <group id="your_id" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>your_label</label>
                <field id="your_id" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>your_label</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>
                <field id="your_id" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>your_label</label>
                    <depends>
                        <field id="*/*/active">1</field>
                    </depends>
                </field>
                <field id="your_id" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>your_label</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                     <depends>
                        <field id="*/*/active">1</field>
                    </depends>
                </field>
            </group>
            <group id="your_id" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>your_label</label>
                <field id="your_id" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>your_label</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                </field>               
                <depends>
                    <field id="section_id/group_id/field_id">1</field>
                </depends>
            </group>



        </section>
    </system>
</config>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.