Drupal Camp Minsk 2012
Возможность изменения только одной области Нет инструментов, позволяющих загрузить css или js динамически Механизм по перезагрузке полей формы приходится писать самостоятельно Нет возможности загрузить новую форму через AJAX, которая также использовала бы AJAX Нет единой страницы для AJAX callback
#ajax['callback'] #ajax['path'] #ajax['wrapper'] #ajax['effect'] #ajax['event'] #ajax['keypress'] #ajax['method'] #ajax['progress'] #ajax['trigger_as']
Запрос посылается на /system/ajax Загружается форма из {cache_block} Обработка загруженной формы Вызов функции из #ajax[callback]
Серверная часть – массив данных
Клиентская часть - набор функций массива Drupal.ajax.prototype.commands
ajax_command_after($selector, $html, $settings = NULL) ajax_command_alert($text) ajax_command_append($selector, $html, $settings = NULL) ajax_command_before($selector, $html, $settings = NULL) ajax_command_changed($selector, $asterisk = '') ajax_command_css($selector, $argument) ajax_command_data($selector, $name, $value) ajax_command_html($selector, $html, $settings) ajax_command_insert($selector, $html, $settings = NULL) ajax_command_invoke($selector, $method, $arguments = array()) ajax_command_prepend($selector, $html, $settings = NULL) ajax_command_remove($selector) ajax_command_replace($selector, $html, $settings = NULL) ajax_command_restripe($selector) ajax_command_settings($argument, $merge = FALSE)
Серверная часть
Клиентская часть
1. Выставление правильных хедеров для ответа от сервера 2. Обработка данных из page callback 3. Загрузка добавленных css и js 4. Изменение настроек в Drupal.settings 5. Преобразование AJAX комманд в JSON 6. Вызов хука hook_exit()
1. Создание селектора для AJAX ответа 2. Добавление #ajax атрибута
3. Написание обработчика AJAX
1. Создание селектора для AJAX ответа 2. Получение текущего шага
3. Создание элементов в зависимости от шага
4. Добавляем к кнопкам AJAX 5. Пишем AJAX обработчик
6. Пишем к форме функцию сабмита
Дополнительные AJAX команды ctools_ajax_command_attr($selector, $name, $value) ctools_ajax_command_redirect($url, $delay = 0, $options = array()) ctools_ajax_command_reload() ctools_ajax_command_submit($selector) Работа с мультистеп формами Работа с модальными окнами Примеры в модуле ctools_ajax_sample
Масловский Евгений