Простейший калькулятор на AJAX для Drupal 7

Основные изменения по сравнению с калькулятором для Drupal 6 — в hook_menu не нужно регистрировать ajax кэлбаки, плюс в них передаётся состояние формы (значения полей), что очень облегчает жизнь:

/**
 * Реализация hook_menu()
 */
function simplecalc_menu() {
  $items['calc'] = array(
    'title' => 'Simple calc',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('simplecalc_form'),
    'access callback' => true,
  );
  return $items;
}
 
/**
 * Описание формы
 */
function simplecalc_form($form, &$form_state) {
  $form['wrapper'] = array(
    '#prefix' => '<div class="container-inline">',
    '#suffix' => '</div>',
  );
  $form['wrapper']['number1'] = array(
    '#type' => 'textfield',
    '#size' => 3,
    '#suffix' => '+',
  );
  $form['wrapper']['number2'] = array(
    '#type' => 'textfield',
    '#size' => 3,
    '#suffix' => '= ',
  );
  $form['wrapper']['answer'] = array(
    '#prefix' => '<div id="answer">',
    '#suffix' => '</div>',
    '#markup' => '?',
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Посчитать',
    '#ajax' => array(
      'callback' => 'simplecalc_callback',
      'wrapper' => 'answer',
      'method' => 'html',
    ),
  );
  return $form;
}
 
/**
 * AJAX callback
 */
function simplecalc_callback($form, $form_state) {
  return strval($form_state['values']['number1'] + $form_state['values']['number2']);
}

Написанное актуально для
Drupal 7.x
Теги:
ahah, работа с формами
Добавлено: 26 Июля 2018 19:25:21 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...