Utilizzo di #states in hook_form_alter
Ciao. Sto cercando di risolvere un problema riguardante l'implementazione delle dipendenze dei campi in Drupal 7. Da numerose domande, è emerso che è ottimale utilizzare #states nel settimo Drupal, invece dei campi condizionali. Come si è rivelato, un altro ostacolo per questo modulo è il problema delle dipendenze quando si utilizza il modulo multi_step.
In generale, ho capito come funziona #states. Ma ho capito solo come funziona nella creazione del mio modulo hook_form. Tuttavia, il mio obiettivo è quello di modificare un modulo già esistente per l'aggiunta di contenuti.
hook_form_ID_FORM_alter
Lo sto usando. Trovo gli array tramite dsm($form);
Ma non riesco a capire come scrivere correttamente le dipendenze.
Ad esempio, nella forma creata l'ho fatto così:
<?php $form['radio_type'] = array(
'#type' => 'radios',
'#options' => array(
'0' => t('Appare un gruppo a discesa'),
'1' => t('Campo di testo non attivo'),
'2' => t('Scompaiono le caselle di controllo'),
),
'#title' => t('Seleziona un'azione')
);
$form['grupa'] = array(
'#type' => 'fieldset',
'#title' => t('Gruppo'),
'#states' => array(
'visible' => array(
':input[name="radio_type"]' => array('value' => '0'),
),
),
);?>
Nella funzione hook_form_alter (per ora lo scrivo nel template)
Sto cercando di fare qualcosa del genere:
<?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'),
),
);
}?>
Cioè, faccio in modo che selezionando nel campo field_sity2 (collegamento al termine) il valore 56 faccia scomparire il campo body.
In generale, nulla funziona. Ho provato in vari modi, ma sembra che non sia mai riuscito a farlo funzionare correttamente. Chiedo consiglio.
P.S. Potreste anche consigliare cosa utilizzare per creare un modulo multi-step per la creazione di contenuti con campi dipendenti. E in futuro, per modificare il contenuto, sarebbe possibile modificarlo tramite schede, e non passo dopo passo.
- Accedi o registrati per poter commentare