ajax в drupal 7
Post on 21-Jan-2016
101 Views
Preview:
DESCRIPTION
TRANSCRIPT
AJAX в Drupal 7
Drupal Camp Minsk 2012
Недостатки AHAH в Drupal 6 Возможность изменения только одной области
Нет инструментов, позволяющих загрузить css или js динамически
Механизм по перезагрузке полей формы приходится писать самостоятельно
Нет возможности загрузить новую форму через AJAX, которая также использовала бы AJAX
Нет единой страницы для AJAX callback
Демонстрация работы AJAX
AJAX и Forms API
#ajax['callback']#ajax['path']#ajax['wrapper']#ajax['effect']#ajax['event']#ajax['keypress']#ajax['method']#ajax['progress']#ajax['trigger_as']
Обработка #ajax[‘callback’]
Запрос посылается на /system/ajax
Загружается форма из {cache_block}
Обработка загруженной формы
Вызов функции из #ajax[‘callback’]
Создание AJAX страниц
Команды AJAX Framework
Серверная часть – массив данных
Команды AJAX Framework
Клиентская часть - набор функций массива
Drupal.ajax.prototype.commands
Команды AJAX Framework 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)
Создание своей AJAX команды
Серверная часть
Создание своей AJAX команды
Клиентская часть
ajax_deliver()
1. Выставление правильных хедеров для ответа от сервера
2. Обработка данных из page callback3. Загрузка добавленных css и js4. Изменение настроек в
Drupal.settings5. Преобразование AJAX комманд в
JSON6. Вызов хука hook_exit()
Создание AJAX ссылок
Перезагрузка форм
1. Создание селектора для AJAX ответа
2. Добавление #ajax атрибута
Перезагрузка форм
3. Написание обработчика AJAX
Создание многошаговых форм
1. Создание селектора для AJAX ответа
2. Получение текущего шага
Создание многошаговых форм
3. Создание элементов в зависимости от шага
Создание многошаговых форм
4. Добавляем к кнопкам AJAX
5. Пишем AJAX обработчик
Создание многошаговых форм
6. Пишем к форме функцию сабмита
Chaos Tools и AJAX
Дополнительные 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
top related