Перейти к содержанию

Контроллеры

Материалы главы можно изучить в новом формате — в документации по Bitrix Framework. В ней улучшена структура, описание, примеры.

Термины

  • Действие, аякс-действие - это метод-ответчик, который реализует конечную логику, выполняет работу и возвращает данные.
  • Контроллер - это совокупность аякс-действий.
  • Конфигурация действий - это метод configureActions() внутри контроллера, где определяются правила доступа к действиям.
  • Пре-, пост-фильтры - это элементы конфигурации, которые по сути являются обработчиками события старта-конца действия. Префильтр может блокировать старт, постфильтр может повлиять на результат.

Соглашения

Примечание: С версии 20.600.87 Главного модуля (main) добавлена поддержка PSR-4 в ajax-контроллерах.

  • При вызове все имена параметров регистроЗАвисимые
  • При вызове все имена контроллеров регистроЗАвисимые
  • При вызове все имена действий регистроНЕзависимые
  • Полное имя действия из модуля генерируется по шаблону vendor:module.partOfNamespace0.partOfNamespace1.Controller.action.

\Bitrix\Disk\Controller\Folder::getAction() 
bitrix:disk.Controller.Folder.get

\Bitrix\Disk\Controller\Intergation\Dropbox::connectAction() 
bitrix:disk.Controller.Intergation.Dropbox.connect

\Qsoft\Somedisk\Controller\SuperFolder::getAction() 
qsoft:somedisk.Controller.SuperFolder.get
- Если не указывать vendor:, то это означает, что это bitrix:

\Bitrix\Disk\Controller\Folder::getAction() 
disk.Controller.Folder.get
- Если указан defaultNamespace в настройках модуля, то его можно опускать и не указывать в действии.

defaultNamespace = \Bitrix\Disk\Controller

\Bitrix\Disk\Controller\Folder::getAction() 
disk.Folder.get
- Если указан альяс в настройках модуля, то можно использовать его вместо сокращаемого namespace.

\Bitrix\Disk\CloudIntegration\Controller => cloud

\Bitrix\Disk\CloudIntegration\Controller\File::getAction() 
disk.cloud.File.get
- При вызове действия из компонента необходимо указывать полное имя компонента и имя действия (без суффикса Action).

bitrix:list.example
showFormAction

BX.ajax.runComponentAction('bitrix:list.example', 'showForm', {
        ...
}).then(function (response) {});
- Время, дата, ссылки должны возвращаться не в строковом формате, а объектами.

\Bitrix\Main\Type\DateTime
\Bitrix\Main\Type\Date
\Bitrix\Main\Web\Uri