logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Utilisation de #states dans hook_form_alter

22/02/2025, by Anonyme (non vérifié)

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.