Uso de #states em hook_form_alter
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.
- Efetue login para postar comentários