AJAX submit с помощью progressive enhancement

Пример создания AJAX формы с помощью концепции прогрессивного улучшения (progressive enhancement). Такая форма будет работать даже при выключенном javascript.

1. Создаём обычную форму с submit callback-ом:
/**
 * Form builder
 */
function mymodule_myform($form, $form_state) {
  $form['sometext'] = array(
    '#type' => 'textfield',
    '#title' => 'Some text',
  );
 
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
  );
 
  return $form;
}
 
/**
 * Form submit callback
 */
function mymodule_myform_submit($form, $form_state) {
  ... // Submit logic
  drupal_set_message('Form submitted.');
}

2. Добавляем AJAX функциональность:
/**
 * Form builder
 */
function mymodule_myform($form, $form_state) {
  $form['sometext'] = array(
    '#type' => 'textfield',
    '#title' => 'Some text',
  );
 
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => 'Submit',
    '#ajax' => array('callback' => 'mymodule_myform_ajax_callback'), // new
  );
 
  return $form;
}
 
/**
 * Form submit callback
 */
function mymodule_myform_submit($form, $form_state) {
  ... // Submit logic
  drupal_set_message('Form submitted.');
}
 
/**
 * Form AJAX callback
 */
function mymodule_myform_ajax_callback($form, $form_state) { // new
  return array(
    '#type' => 'ajax',
    '#commands' => array(
      ajax_command_html('#' . $form['#id'], theme('status_messages')),
    ),
  );
}

Написанное актуально для
Drupal 7
Теги:
ajax, работа с формами
Добавлено: 30 Июля 2018 08:04:39 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...