depende de não funcionar em system.xml
-
12-12-2019 - |
Pergunta
eu criei system.xml
arquivo como abaixo e defina todos os campos dependendo de active
campo, mas alguns deles não funcionam e exibem mesmo active
campo é desabilitado
sistema.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>
....
no arquivo acima get_settings
não funciona, mas title
trabalho também!O que há de diferente entre eles?
e Configurações.php em 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;
}
}
mas não usei $element
em códigos!
Solução
Acabei de testar seu código e parece funcionar bem no title
configuração.Não funciona no get_settings
config porque o Javascript que faz o trabalho nos bastidores requer que você tenha um campo de entrada com o ID correto.
Então, para que isso funcione, você teria que adicionar um campo de entrada oculto, pode ser um campo de entrada fictício, se desejar, mas o ID deve seguir suas configurações, então sugiro que você inspecione o elemento em um dos outros campos de entrada e siga o exemplo
Para fazer isso basta seu Settings.php
com o seguinte:
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;
}
É isso.Lembre-se, a tag depende só funciona quando há um campo de entrada disponível na fonte com os IDs corretos.