logo

Paleta - Deixe colorido🎨

Palette — Construtor visual de páginas. Não precisa ser designer.

Demonstração ao vivo Baixar Palette

Scroll

Uso de #states em hook_form_alter

22/02/2025, by Anônimo (não verificado)

Olá. Estou tentando resolver a questão da implementação de dependência de campos no Drupal 7. Das inúmeras perguntas, ficou claro que o ideal no Drupal 7 é usar #states, em vez de conditional fields. Como se verificou, outra pedra no módulo é o problema de dependência ao usar o módulo multi_step.

No geral, como funciona o #states, eu entendi. Mas só entendi como funciona ao criar meu próprio formulário hook_form. Mas minha tarefa é refazer um formulário já pronto de adição de conteúdo.

hook_form_ID_FORM_alter

Estou usando ela. Encontro os arrays através de dsm($form);
Mas não consigo entender como prescrever corretamente as dependências.

Digamos que no formulário criado fiz assim:

<?php $form['radio_type'] = array(
    
'#type' => 'radios',
    
'#options' => array(
      
'0'   => t('Aparece grupo suspenso'),
      
'1' => t('Campo de texto não ativo'),
      
'2'      => t('Checkboxes desaparecem'),
    ),
    
'#title' => t('Escolha a ação')
  );
  
  
$form['grupa'] = array(
    
'#type' => 'fieldset',
    
'#title' => t('Grupo'),
    
'#states' => array(
      
'visible' => array(
        
':input[name="radio_type"]' => array('value' => '0'),
      ),
    ),
  );
?>

 

Na função hook_from_alter (escrevendo por enquanto no template)
Tento fazer algo assim:

<?phpfunction theme_form_zavedeniya_node_form_alter(&$form, &$form_state$form_id) {
   
dpm($form); 
   
$form['body']['und']['0']['value']['#states']  = array(
  
'invisible' => array(
    
':input[name="field_sity2"]' => array('value' => '56'),
  ),
);
}
?>

 

Ou seja, faço para que ao escolher no campo field_sity2 (referência a termo) ao escolher o 56º valor o campo body desapareça.
No geral nada funciona. Tentei de várias formas, mas parece que nunca consegui fazer corretamente. Peço conselhos.

P.S. Talvez também pudessem aconselhar o que usar para criar um formulário multi-etapas de criação de conteúdo, com campos dependentes. E para que depois, ao editar o material, seja possível editá-lo através de abas, e não por etapas.