Utilisation de #states dans hook_form_alter
Bonjour. J'essaie de résoudre un problème concernant la mise en œuvre des dépendances de champs dans Drupal 7. D'après de nombreuses questions, il est clair qu'il est optimal d'utiliser #states dans Drupal 7 au lieu des champs conditionnels. Il s'avère qu'un autre obstacle pour ce module est le problème de dépendance lors de l'utilisation du module multi_step.
En général, j'ai compris comment fonctionne #states. Mais je n'ai compris son fonctionnement que lors de la création de mon propre formulaire avec hook_form. Cependant, ma tâche consiste à retravailler un formulaire déjà existant pour l'ajout de contenu.
hook_form_ID_FORM_alter
Je l'utilise. Je trouve les tableaux via dsm($form);
Mais je ne comprends pas comment définir correctement les dépendances.
Par exemple, dans le formulaire créé, je l'ai fait comme suit :
<?php $form['radio_type'] = array(
'#type' => 'radios',
'#options' => array(
'0' => t('Apparaît un groupe déroulant'),
'1' => t('Champ texte non actif'),
'2' => t('Les checkboxes disparaissent'),
),
'#title' => t('Choisissez une action')
);
$form['grupa'] = array(
'#type' => 'fieldset',
'#title' => t('Groupe'),
'#states' => array(
'visible' => array(
':input[name="radio_type"]' => array('value' => '0'),
),
),
);?>
Dans la fonction hook_form_alter (je l'écris pour l'instant dans le template)
J'essaie de faire quelque chose comme ça :
<?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'),
),
);
}?>
C'est-à-dire que je fais en sorte que lorsque l'on choisit dans le champ field_sity2 (lien vers le terme) la valeur 56, le champ body disparaisse.
En gros, rien ne fonctionne. J'ai essayé de différentes manières, mais il semble que je n'ai jamais réussi à le faire correctement. Je demande des conseils.
P.S. Peut-être pourriez-vous également me conseiller sur ce qu'il faut utiliser pour créer un formulaire multi-étapes avec des champs dépendants. Et pour que par la suite, lors de l'édition du contenu, cela puisse se faire via des onglets et non par étapes.
- Se connecter ou s'inscrire pour publier un commentaire