Gebruik van #states in hook_form_alter
Hallo. Ik probeer een probleem op te lossen met de implementatie van veldafhankelijkheden in Drupal 7. Uit de vele vragen is het duidelijk geworden dat het optimaal is om #states te gebruiken in Drupal 7, in plaats van voorwaardelijke velden. Het blijkt dat er nog een probleem is met deze module, namelijk afhankelijkheden bij het gebruik van de multi_step-module.
Over het algemeen heb ik begrepen hoe #states werkt. Maar ik heb alleen begrepen hoe het werkt bij het maken van mijn eigen formulier met hook_form. Mijn taak is echter om een al bestaand formulier voor het toevoegen van inhoud opnieuw te ontwerpen.
hook_form_ID_FORM_alter
Ik gebruik deze. Ik vind de arrays via dsm($form);
Maar ik kan niet begrijpen hoe ik de afhankelijkheden correct moet definiëren.
Stel dat ik dit in het gemaakte formulier zo heb gedaan:
<?php $form['radio_type'] = array(
'#type' => 'radios',
'#options' => array(
'0' => t('Er verschijnt een dropdowngroep'),
'1' => t('Veld tekst is niet actief'),
'2' => t('Checkboxen verdwijnen'),
),
'#title' => t('Kies een actie')
);
$form['grupa'] = array(
'#type' => 'fieldset',
'#title' => t('Groep'),
'#states' => array(
'visible' => array(
':input[name="radio_type"]' => array('value' => '0'),
),
),
);?>
In de functie hook_form_alter (ik schrijf dit voorlopig in de template)
Probeer ik iets als volgt te doen:
<?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'),
),
);
}?>
Dat wil zeggen, ik zorg ervoor dat wanneer de waarde 56 wordt gekozen in het veld field_sity2 (link naar term), het body-veld verdwijnt.
Over het algemeen werkt niets. Ik heb het op verschillende manieren geprobeerd, maar het lijkt erop dat het nooit goed is gelukt. Ik vraag om advies.
P.S. Misschien kunnen jullie ook aanbevelen wat te gebruiken voor het maken van een meerstapsformulier voor het creëren van inhoud met afhankelijke velden. En zodat het later mogelijk is om de inhoud via tabbladen te bewerken, en niet stap voor stap.
- Login of registreer om te reageren