Domanda

Ho due campi

$form["field_num_males"]
$form["field_num_females"]

Devo popolare dinamicamente il campo $ forma ["field_gender_total"] con la somma di essi, prima della presentazione (AJAX).

Come si può fare questo con Drupal 7?

Grazie!

È stato utile?

Soluzione

Sì, può essere fatto con Ajax. Il seguente codice aggiornerà automatico il totale quando il campo di testo viene aggiornato:

function gender_total_menu()
{
    $items = array();

    $items['test'] = array(
        'title'           => Gender total,
        'page callback'   => 'drupal_get_form',
        'page arguments'  => array('gender_total_form'),
        'access callback' => array(TRUE),
        'type'            => MENU_CALLBACK,
    );

    return $items;
}

function gender_total_form($form, &$form_state)
{
    $total = 0;

    if (array_key_exists('values', $form_state) &&
        array_key_exists('field_num_males', $form_state['values']) &&
        array_key_exists('field_num_females', $form_state['values'])
    ) {
        $total = $form_state['values']['field_num_males'] + $form_state['values']['field_num_females'];
    }

    $form = array();

    $form["field_num_males"] = array(
        '#type'          => 'textfield',
        '#title'         => t("Number of males"),
        '#default_value' => 0,
        '#ajax' => array(
            'callback' => 'ajax_update_callback',
            'wrapper'  => 'wrapper',
        ),
    );

    $form["field_num_females"] = array(
        '#type'          => 'textfield',
        '#title'         => t("Number of females"),
        '#default_value' => 0,
        '#ajax' => array(
            'callback' => 'ajax_update_callback',
            'wrapper'  => 'wrapper',
        ),
    );

    $form['total'] = array(
        '#markup' => '<p> Total: ' . $total . '</p>',
        '#prefix' => '<div id="wrapper">',
        '#suffix' => '</div>',
    );

    return $form;
}

function ajax_update_callback($form, $form_state)
{
    return $form['total'];
}

Altri suggerimenti

Prova il Campo calcolato modulo

Il campo calcolato è un modulo campo CCK molto potente che consente di aggiungere un "campi calcolato" personalizzati ai tipi di contenuto. Questi campi calcolati sono popolati con valori che si definiscono tramite codice PHP. Puoi attingere a qualsiasi cosa disponibile per Drupal, compresi altri campi ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top