'ajax_forms_ajax_callback',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
'delivery callback' => 'ajax_deliver',
'theme callback' => 'ajax_base_page_theme',
);
return $items;
}
function ajax_forms_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'node-review-form') {
// Добавляем div, куда будем ложить сообщения, в самый верх формы
$form['messages'] = array(
'#markup' => '',
'#weight' => -50,
);
// Включаем ajax для кнопки
$form['actions']['submit']['#ajax'] = array(
'path' => 'ajax_forms_ajax',
);
}
}
function ajax_forms_ajax_callback() {
// Подключаем файл из модуля user.
// В данной ситуации без него работать не будет, но
// вообще он не нужен. Надо подключать только те файлы,
// без которых форма не сможет корректно отработать.
// Во многих случаях вообще ничего подключать не надо.
module_load_include('pages.inc', 'user');
// Получаем данные о форме и её состоянии
list($form, $form_state) = ajax_get_form();
// Заставляем выполниться все действия формы, то есть
// выполняем все validate и submit функции для этой формы.
drupal_process_form($form['#form_id'], $form, $form_state);
// Собираем сообщения, которые вылезли в процессе выполнения формы
$commands = array();
$commands[] = ajax_command_html('#ajax-forms-messages', theme('status_messages'));
// Записываем сообщение в div, который был добавлен вверху формы
return array('#type' => 'ajax', '#commands' => $commands);
}
?>
Алексей Железнов
Общительные продавцы. Решают ваши проблемы на месте. Рекомендую.