Magento 2.2.4: Не работает зависимость от другой группы
Я использую magento 2.2.4. В конфигурации системы я хочу применить зависимость.
Но и группы, и поля разные. Он работает в одной группе. Но я не могу получить вывод для другой группы.
Как это сделать? Пожалуйста, помогите мне.
Я добавил свой system.xml код файла:
System.xml :
<?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="sectionID" translate="label" type="text" sortOrder="200" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Name</label>
<tab>TabName</tab>
<resource>CompanyName_ModuleName::methodName</resource>
<group id="groupID" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<label>General Configuration</label>
<field id="fieldID" 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="groupID2" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Form Configuration</label>
<field id="fieldID2" 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="fieldID">1</field>
</depends>
</field>
</group>
</section>
</system>
</config>
3 answers
Это работает только в том случае, если ваш идентификатор поля находится под идентификатором родительской группы. Для применения зависимости в другой группе вам нужно добавить следующее:
<?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="sectionID" translate="label" type="text" sortOrder="200" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Name</label>
<tab>TabName</tab>
<resource>CompanyName_ModuleName::methodName</resource>
<group id="groupID" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
<label>General Configuration</label>
<field id="fieldID" 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="groupID2" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Form Configuration</label>
<field id="fieldID2" 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="sectionID/groupID/fieldID">1</field>
</depends>
</field>
</group>
</section>
</system>
</config>
Надеюсь, это может быть полезно для вас. Это должно сработать.
Проблему можно решить, просто указав полный путь, если поле не входит в текущую группу. например,
<depends>
<field id="section/group/field">1</field>
</depends>
Удачи!
Если это одна и та же группа, вы можете использовать подстановочный знак для идентификатора поля как
<depends>
<field id="*/*/[depends_on_field_id]">someValue</field>
</depends>
Если это тот же раздел, вам также разрешено использовать подстановочный знак в качестве
<depends>
<field id="*/[other_group_id]/[depends_on_field_id]">someValue</field>
</depends>
Так что в вашем случае этого может быть достаточно
<depends>
<field id="*/groupID/fieldID">1</field>
</depends>