1 / 21

AJAX в Drupal 7

Drupal Camp Minsk 2012. AJAX в Drupal 7. Недостатки AHAH в Drupal 6. Возможность изменения только одной области Нет инструментов, позволяющих загрузить css или js динамически Механизм по перезагрузке полей формы приходится писать самостоятельно

hazel
Download Presentation

AJAX в Drupal 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Drupal Camp Minsk 2012 AJAX в Drupal 7

  2. Недостатки AHAH в Drupal 6 • Возможность изменения только одной области • Нет инструментов, позволяющих загрузить cssили jsдинамически • Механизм по перезагрузке полей формы приходится писать самостоятельно • Нет возможности загрузить новую форму через AJAX, которая также использовала бы AJAX • Нет единой страницы для AJAX callback

  3. Демонстрация работы AJAX

  4. AJAX и Forms API • #ajax['callback'] • #ajax['path'] • #ajax['wrapper'] • #ajax['effect'] • #ajax['event'] • #ajax['keypress'] • #ajax['method'] • #ajax['progress'] • #ajax['trigger_as']

  5. Обработка #ajax[‘callback’] • Запрос посылается на /system/ajax • Загружается форма из {cache_block} • Обработка загруженной формы • Вызов функции из #ajax[‘callback’]

  6. Создание AJAX страниц

  7. Команды AJAXFramework Серверная часть – массив данных

  8. Команды AJAXFramework Клиентская часть - набор функций массива Drupal.ajax.prototype.commands

  9. Команды AJAXFramework • 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)

  10. Создание своей AJAX команды Серверная часть

  11. Создание своей AJAX команды Клиентская часть

  12. ajax_deliver() • Выставление правильных хедеров для ответа от сервера • Обработка данных из page callback • Загрузка добавленных cssи js • Изменение настроек в Drupal.settings • Преобразование AJAX комманд в JSON • Вызов хукаhook_exit()

  13. Создание AJAX ссылок

  14. Перезагрузка форм 1. Создание селектора для AJAX ответа 2. Добавление #ajax атрибута

  15. Перезагрузка форм 3. Написание обработчика AJAX

  16. Создание многошаговых форм 1. Создание селектора для AJAX ответа 2. Получение текущего шага

  17. Создание многошаговых форм 3. Создание элементов в зависимости от шага

  18. Создание многошаговых форм 4. Добавляем к кнопкам AJAX 5. Пишем AJAX обработчик

  19. Создание многошаговых форм 6. Пишем к форме функцию сабмита

  20. 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

  21. Спасибо за внимание! Масловский Евгений http://drupalace.ru

More Related