Uso de #states en hook_form_alter
Hola. Estoy tratando de resolver un problema relacionado con la implementación de dependencias de campos en Drupal 7. De las numerosas preguntas, se ha hecho evidente que es óptimo usar #states en Drupal 7, en lugar de campos condicionales. Resulta que otro obstáculo para este módulo es el problema de las dependencias al usar el módulo multi_step.
En general, he entendido cómo funciona #states. Pero solo comprendí cómo funciona al crear mi propio formulario con hook_form. Sin embargo, mi tarea consiste en modificar un formulario ya existente para la adición de contenido.
hook_form_ID_FORM_alter
Lo estoy utilizando. Encuentro los arreglos a través de dsm($form);
Pero no puedo entender cómo definir correctamente las dependencias.
Supongamos que en el formulario creado lo hice así:
<?php $form['radio_type'] = array(
'#type' => 'radios',
'#options' => array(
'0' => t('Aparece un grupo desplegable'),
'1' => t('Campo de texto no activo'),
'2' => t('Desaparecen las casillas de verificación'),
),
'#title' => t('Seleccione una acción')
);
$form['grupa'] = array(
'#type' => 'fieldset',
'#title' => t('Grupo'),
'#states' => array(
'visible' => array(
':input[name="radio_type"]' => array('value' => '0'),
),
),
);?>
En la función hook_form_alter (por ahora lo escribo en template)
Estoy tratando de hacer algo así:
<?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'),
),
);
}?>
Es decir, hago que al seleccionar en el campo field_sity2 (enlace al término) y elegir el valor 56, el campo body desaparezca.
En general, nada funciona. He probado de diferentes maneras, pero parece que nunca he logrado hacerlo correctamente. Solicito consejo.
P.D. Tal vez también podrían aconsejarme qué usar para crear un formulario de varios pasos para la creación de contenido, con campos dependientes. Y que posteriormente, para editar el contenido, se pueda hacer a través de pestañas, en lugar de por pasos.
- Inicie sesión o registrese para enviar comentarios