system.xml зависимость от поля


Таким образом, вы можете установить в файле system.xml модуля зависимость между полями, добавив тег <depends> в одно из полей.

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>1</field1>
    </depends>
</field2>

Приведенный выше код означает, что field2 будет отображаться, когда значение field1 равно 1. Я хочу знать, как/могу ли я сказать Magento, чтобы он показывал field2, если значение field1 равно 1 ИЛИ 2?

Author: Marius, 2013-10-24

2 answers

Попробуйте это:

<depends>
    <field separator="|">
        <value>1|2|3</value>
    </field>
</depends>
 29
Author: Alexander, 2014-02-16 22:45:24

[ РЕДАКТИРОВАТЬ]

Я ошибся в своем ответе ниже. Я не буду удалять его (пока), потому что у меня 7 голосов по этому поводу:). Но я редактирую его, чтобы у всех вас была возможность отозвать свой голос (даже понизить его, потому что я этого заслуживаю).

Оригинальный Ответ

Ха!.. Я нашел его.
Краткий ответ: Ты не можешь!
Длинный ответ: Вы должны быть в состоянии сделать это, если бы кто-то знал разницу между массивом и объектом.
В теория, это должно сработать

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>
           <value>1|2</value>
           <separator>|</separator>
       </field1>
    </depends>
</field2>

Но в коде, который обрабатывает зависимость, Mage_Adminhtml_Block_System_Config_Form::initFields в строке 366 есть этот код

if (isset($dependent['separator'])) {
    $dependentValue = explode((string)$dependent['separator'], $dependentValue);
}

$dependent всегда является объектом, поэтому $dependent['separator'] никогда не устанавливается.
Если я изменю приведенный выше код на

if (isset($dependent->separator)) {
    $dependentValue = explode((string)$dependent->separator, $dependentValue);
}

Все работает гладко.
Я думаю, что я не могу изменить ядро только ради расширения, поэтому мне нужно создать 2 поля вместо 1, по одному для каждого значения из field1 или создать пользовательский js, который обрабатывает это, и добавить его в конфигурацию страница.

 7
Author: Marius, 2014-02-17 07:19:00