- Добавляем в settings.php
123'routing' => ['value' => ['config' => ['api.php']]]
Это значит, что битрикс будет смотреть на конфигурацию роутов из файла
1\bitrix\routes\api.php
или если он есть
1\local\routes\api.php
2. Добавляем в файл \local\routes\api.php путь к контроллеру модуля (обработчик ajax запросов)Пример для модуля с названием my.module
12345678910111213use Bitrix\Main\Routing\RoutingConfigurator;use My\Module\Controller\ReviewsController;use My\Module\Controller\AuthController;return static function (RoutingConfigurator $routes) {$routes->prefix('auth')->group(function (RoutingConfigurator $routes) {/*** Запрос смс кода авторизации*/$routes->post('', [AuthController::class, 'checkRequest']);});};Если запрос передаётся в формате json, то так же необходимо добавить пре фильтр на обработку этого формата
1234567891011use \Bitrix\Main\Engine\ActionFilter;/*** @return ActionFilter\HttpMethod[]*/protected function getDefaultPreFilters(): array{return [new ActionFilter\ContentType([ActionFilter\ContentType::JSON]),];} - Название метода должно заканчиваться на Action, например checkRequestAction, при этом в роуте пешем обращение к методу без приставки Action, т.е. checkRequest
- Аргументом метода должен передаваться корневой элемент запроса.
Т.е. напримерSubscriptionItems
123public function checkRequestAction($SubscriptionItems){}Для запроса вида
123456{"SubscriptionItems": {"PartialResult": "1","Count": "10"}}Пример заготовки, которая возвращает массив, который в неё передали
1234567891011121314151617181920212223242526272829303132<?phpnamespace My\Module\Controller;use Bitrix\Main\Engine\Controller;use \Bitrix\Main\Engine\ActionFilter;class AuthController extends Controller{/*** @return ActionFilter\HttpMethod[]*/protected function getDefaultPreFilters(): array{return [new ActionFilter\ContentType([ActionFilter\ContentType::JSON]),];}/*** @return array*/public function checkRequestAction($SubscriptionItems){return $SubscriptionItems;}}
Подключить собственные пространства имен в файле include.php
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Bitrix\Main\Loader::registerAutoLoadClasses( 'My.Module', [ My\Module\Service\AuthorisationService::class => 'lib/services/AuthorisationService.php', My\Module\Controller\OrganizationalStructureController::class => 'lib/controller/organizationalstructurecontroller.php', My\Module\Controller\AuthController::class => 'lib/controller/authcontroller.php', My\Module\ORM\SizTable::class => 'lib/ORM/SizTable.php', My\Module\ORM\StoreTable::class => 'lib/ORM/StoreTable.php', My\Module\ORM\StoresTable::class => 'lib/ORM/StoresTable.php', My\Module\ORM\PositionsTable::class => 'lib/ORM/PositionsTable.php', My\Module\Tools\Pagination::class => 'lib/tools/Pagination.php', ] ); |
