AJAX-части плагинов в Cotonti Siena
техническое руководство (фактическое описание, основано по-большей части из старой документации разработчиков Cotonti.)
1. Общий принцип работы AJAX-частей
В архитектуре Cotonti Siena AJAX-обработчики реализуются через части плагина (plugin parts), которые используют hook ajax.
Фактические свойства таких частей:
выполняются как самостоятельный обработчик запроса
вызываются через plug.php
используются для AJAX-запросов
не выполняют стандартный вывод страницы (шаблон сайта)
Документация Cotonti указывает:
AJAX-часть плагина должна использовать hook ajax
она вызывается через параметр r в plug.php
стандартный вывод страницы не используется
2. URL вызова AJAX-части
AJAX-обработчик вызывается через:
где:
— код плагина.
При таком вызове Cotonti:
определяет код плагина
ищет plugin parts
выполняет часть с hook ajax
Документация подтверждает, что при вызове могут подключаться файлы:
или другой файл плагина, объявленный как AJAX-часть.
3. Расположение файлов
AJAX-части находятся в каталоге плагина:
или:
Имя файла не фиксировано.
Единственное требование — наличие hook ajax.
4. Заголовок AJAX-части
Каждая часть плагина содержит служебный блок расширения.
Пример:
Факты:
5. Поведение header.php и footer.php
В режиме AJAX Cotonti изменяет процесс вывода страницы.
Фактическое поведение:
Это сделано для сохранения совместимости с кодом системы.
Таким образом:
| компонент | поведение |
| header.php | может подключаться |
| footer.php | может подключаться |
| вывод HTML страницы | отсутствует |
6. Определение AJAX-режима
Cotonti автоматически определяет AJAX-запрос.
В системе устанавливается константа:
Если запрос выполнен через AJAX:
Если обычный HTTP-запрос:
Это значение доступно во всех частях системы.
Пример использования:
7. Обработка параметров запроса
В Cotonti принято использовать функцию:
Она выполняет:
чтение параметров
фильтрацию
приведение типов
Пример:
Параметры:
| параметр | значение |
| G | GET |
| P | POST |
| INT | целое число |
| TXT | строка |
8. Формат ответа AJAX-части
Cotonti не ограничивает формат ответа.
Разработчик может вернуть:
Документация указывает, что система не содержит специальных API для JSON/XML, так как PHP уже предоставляет необходимые функции.
Пример JSON-ответа
Пример HTML-ответа
9. Пример реальной AJAX-части плагина
Пример обработчика:
Фактические операции:
чтение параметра code
SQL-запрос
формирование массива
возврат JSON
Такой пример используется в официальном руководстве разработки плагинов.
10. Вызов AJAX-части через JavaScript
AJAX-часть может вызываться через jQuery или обычный JavaScript.
Пример:
Это пример из документации Cotonti.
11. Параметр безопасности x
При отправке данных необходимо передавать параметр защиты:
Он содержит значение функции:
Этот параметр используется:
| метод | требование |
| POST | обязательно |
| GET | иногда |
Пример POST:
Документация описывает этот параметр как anti-XSS защиту.
12. AJAX-helpers в Cotonti
Cotonti содержит клиентские вспомогательные инструменты.
Главная функция:
Она:
собирает данные формы
выполняет AJAX-запрос
поддерживает GET и POST
Пример:
Функция описана в разделе AJAX helpers.
13. Автоматическая AJAX-навигация
Cotonti поддерживает автоматическую AJAX-навигацию интерфейса.
Условия:
После этого:
на ссылке или форме активирует AJAX-загрузку.
Пример:
Результат загружается в контейнер:
Это стандартный контейнер AJAX-вывода.
14. AJAX-режим в модулях
В Cotonti Siena AJAX поддерживается не только в плагинах.
Начиная с версии:
AJAX-режим может использоваться:
Система автоматически устанавливает COT_AJAX для асинхронных запросов.
15. Фактические выводы
Актуальные свойства AJAX-частей в Cotonti Siena:
AJAX-обработчик реализуется как plugin part с hook ajax.
Вызывается через plug.php?r=plugin_code.
Файл может иметь любое имя, если объявлен с Hooks=ajax.
Стандартный вывод страницы не выполняется.
Система определяет AJAX-режим через константу COT_AJAX.
Ответ может быть любого формата (JSON, HTML, текст).
Для получения данных используется cot_import().
Для защиты форм используется параметр x (sourcekey).
На клиентской стороне доступна вспомогательная функция ajaxSend().
AJAX-режим может использоваться в плагинах и модулях системы.
Все перечисленные пункты собраны из по-большей части старой документации разработчиков Cotonti.