dipende non funziona in System.xml
-
12-12-2019 - |
Domanda
Ho creato il file system.xml
come sotto e imposta tutti i campi dipendono dal campo active
, ma alcuni di essi non funzionano e visualizzano anche il campo active
è disabilitato
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>
....
.
Nel file sopra il file get_settings
non funziona, ma anche title
funziona!
Cosa è diverso tra loro?
e impostazioni.php in 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;
}
}
.
Ma non ha usato $element
nei codici!
Soluzione
Ho appena testato il tuo codice e sembra funzionare bene sulla configurazione title
.Non funziona sulla configurazione get_settings
perché il JavaScript che esegue il lavoro dietro le quinte richiede di avere un campo di immissione con l'ID corretto.
Pertanto, per far funzionare questo, dovresti aggiungere un campo di input nascosto, può essere un campo di ingresso fittizio se ti piace, ma l'ID deve seguire le impostazioni di configurazione, quindi ti suggerisco di ispezionare l'elemento su uno deiAltri campi di input e segui l'assobile
Per fare questo solo il tuo Settings.php
con quanto segue:
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;
}
.
questo è.Ricorda, il tag dipende solo funziona solo quando c'è un campo di input disponibile nella sorgente con ID corretto.