logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Verwendung von #states in hook_form_alter

22/02/2025, by Gast (nicht überprüft)

Hallo. Ich versuche, ein Problem mit der Implementierung von Feldabhängigkeiten in Drupal 7 zu lösen. Aus zahlreichen Fragen wurde klar, dass es optimal ist, in Drupal 7 #states anstelle von bedingten Feldern zu verwenden. Wie sich herausstellte, gibt es noch ein weiteres Hindernis für dieses Modul, nämlich das Problem der Abhängigkeit bei Verwendung des Moduls multi_step.

Im Großen und Ganzen habe ich verstanden, wie #states funktioniert. Aber ich habe nur verstanden, wie es bei der Erstellung meines eigenen Formulars mit hook_form funktioniert. Meine Aufgabe besteht jedoch darin, ein bereits vorhandenes Materialhinzufügungsformular umzubauen.

hook_form_ID_FORM_alter

Ich benutze es. Ich finde die Arrays über dsm($form);
Aber ich kann nicht verstehen, wie man die Abhängigkeiten richtig definiert.

Angenommen, in dem erstellten Formular habe ich es so gemacht:

<?php $form['radio_type'] = array(
    
'#type' => 'radios',
    
'#options' => array(
      
'0'   => t('Erscheint eine Dropdown-Gruppe'),
      
'1' => t('Feld Text nicht aktiv'),
      
'2'      => t('Checkboxen verschwinden'),
    ),
    
'#title' => t('Wählen Sie eine Aktion')
  );
  
  
$form['grupa'] = array(
    
'#type' => 'fieldset',
    
'#title' => t('Gruppe'),
    
'#states' => array(
      
'visible' => array(
        
':input[name="radio_type"]' => array('value' => '0'),
      ),
    ),
  );
?>

 

In der Funktion hook_form_alter (ich schreibe es vorerst in das Template)
Ich versuche, etwas Ähnliches zu machen:

<?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'),
  ),
);
}
?>

 

Das heißt, ich mache es so, dass beim Auswählen des Wertes 56 im Feld field_sity2 (Verweis auf den Begriff) das Feld body verschwindet.
Insgesamt funktioniert nichts. Ich habe es auf verschiedene Arten versucht, aber es scheint, als hätte ich es nie richtig hinbekommen. Ich bitte um Rat.

P.S. Vielleicht könnten Sie auch empfehlen, was ich für die Erstellung eines mehrstufigen Formulars mit abhängigen Feldern verwenden könnte. Und damit ich später das Material über Tabs und nicht schrittweise bearbeiten kann.