Bitrix24 Tasks: Маршрутизация ajax-экшнов

Маршрутизацией вызовов занимается класс /Bitrix/Tasks/Dispatcher. Основной алгоритм маппинга следующий:

  • точка входа: components/bitrix/tasks.base/ajax.php
  • создается инстанс \Bitrix\Tasks\Dispatcher, ему скармливается список операций
  • для каждой операции ищется соответствующее пространство имен, класс и метод, например task.template.checklist.update перейдет в \Bitrix\Tasks\Dispatcher\PublicAction\Task\Template\CheckList::update()
  • производится проверка аргументов
  • производится выполнение операций
  • результат выводится в виде json

Базовая точка входа

Базовой точкой входа является компонент tasks.base. Это псевдо-компонент, который в интерфейсе нигде не подключается напрямую, но от него должны быть отнаследованы все другие компоненты модуля.
Базовая точка входа выполняет только те действия, обработчики которых находятся в /lib/dispatcher/publicaction/ и никакие более.

Точка входа в компонентах-наследниках

В наследниках компонента tasks.base возможно объявление дополнительных обработчиков.

Точка входа для шаблонов

Как бы безумно это ни звучало, но шаблоны тоже могут предоставлять свои обработчики. Это нужно тогда, когда обработчик выполняет действия, которые имеют смысл только для текущего представления (шаблона компонента). Хороший пример: сохранение выбранных блоков на форме редактирвания шаблона задачи.

Распечатка всех доступных экшнов базовой точки входа

CModule::IncludeModule('tasks');

$d = new \Bitrix\Tasks\Dispatcher();
print($d->getDescriptionFormatted());

Оставьте комментарий