← К документации

Модули

Ресурсы и контроллеры модуля

Подключение JS/CSS и минимальное AJAX-действие с конфигурацией namespace.

Публичные JS и CSS

После установки файлов в /local/js/test.example/ и /local/css/test.example/ подключайте их через Asset. Наличие файла внутри каталога установки модуля не делает его доступным по этим URL.

<?php

use Bitrix\Main\Page\Asset;

Asset::getInstance()->addCss('/local/css/test.example/app.css');
Asset::getInstance()->addJs('/local/js/test.example/app.js');

.settings.php модуля

В /local/modules/test.example/.settings.php задайте пространство имён контроллеров. Класс находится в lib/controller/health.php; автозагрузка модуля должна быть настроена.

<?php

return [
    'controllers' => [
        'value' => [
            'defaultNamespace' => '\Test\Example\Controller',
        ],
        'readonly' => true,
    ],
];

Контроллер проверки связи

<?php

namespace Test\Example\Controller;

use Bitrix\Main\Engine\ActionFilter;
use Bitrix\Main\Engine\Controller;

class Health extends Controller {
    public function configureActions(): array {
        return [
            'ping' => [
                'prefilters' => [
                    new ActionFilter\Authentication(),
                    new ActionFilter\HttpMethod([ActionFilter\HttpMethod::METHOD_POST]),
                    new ActionFilter\Csrf(),
                ],
            ],
        ];
    }

    public function pingAction(): array {
        return ['status' => 'ok'];
    }
}

Этот метод проверяет связь JS с контроллером и не читает CRM. Авторизация и CSRF не заменяют право на карточку: для будущего действия чтения или изменения CRM добавьте отдельную проверку объекта.

Вызов из интерфейса коробки

BX.ajax.runAction('test:example.Health.ping', {
    data: {}
}).then(function (response) {
    console.log(response.data.status);
}).catch(function (response) {
    console.error(response.errors);
});

Код выполняется на странице коробки с подключённым ядром JS. Это API контроллеров Bitrix Framework, а не REST-вызов через BX24.js в облачном приложении.

Источники