зависит не работает в system.xml
-
12-12-2019 - |
Вопрос
я создал system.xml
файл, как показано ниже, и установите все поля в зависимости от active
поле, но некоторые из них не работают и даже не отображаются active
поле неполноценный
system.xml
<fields>
<active translate="label">
<label>Enabled</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>2</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</active>
<get_settings translate="label">
<label>Account Info</label>
<frontend_type>label</frontend_type>
<frontend_model>module/adminhtml_settings</frontend_model>
<sort_order>3</sort_order>
<show_in_default>1</show_in_default>
<depends><active>1</active></depends>
</get_settings>
<title translate="label">
<label>Title</label>
<frontend_type>text</frontend_type>
<sort_order>4</sort_order>
<show_in_default>1</show_in_default>
<depends><active>1</active></depends>
</title>
....
в файле выше get_settings
не работает, но title
работай также!Чем они отличаются?
и Settings.php в module/adminhtml_settings
class Name_Module_Block_Adminhtml_Settings extends Mage_Adminhtml_Block_System_Config_Form_Field
{
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
....
....
return $html;
}
}
но не использовал $element
в кодах!
Решение
Только что проверил ваш код, и, похоже, он отлично работает на title
конфиг.Это не работает на get_settings
config, потому что Javascript, который выполняет скрытую работу, требует наличия поля ввода с правильным идентификатором.
Итак, чтобы это работало, вам нужно будет добавить скрытое поле ввода, которое может быть фиктивным полем ввода, если хотите, но идентификатор должен соответствовать вашим настройкам конфигурации, поэтому я бы предложил вам проверить элемент в одном из других полей ввода. и следовать примеру
Для этого просто ваш Settings.php
со следующим:
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
{
$html = $element->getElementHtml();
$html .= '<input id="name_module_get_settings" name="groups[module_name][fields][titles][value]" value="" class=" input-text" type="hidden">';
/** do what ever you want here **/
return $html;
}
Вот и все.Помните, что тег зависимости работает только в том случае, если в источнике имеется поле ввода с правильным идентификатором.