Пример создания 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