Подмодули
В данном руководстве описывается процесс создания подмодулей. Подмодули позволяют расширять функциональность основного модуля и обеспечивают более модульную архитектуру.
Структура директорий
Все подмодули должны размещаться в директории: /local/bik.rest/modules/
Создание подмодуля
Создать директорию /local/bik.rest/modules/.
Создать новый PHP-файл с именем, отражающим назначение вашего подмодуля (например,
CustomModule.php
).CustomModule.php должен содержать класс, который наследуется от абстрактного класса AbstractModule и определяет его абстрактные методы такие как setTitle, setIcon, setTabs, setOptions.
Создайте свой первый подмодуль, основываясь на приведенном ниже примере.
Созданный подмодуль можно посмотреть в Настройки -> Настройки модулей -> BIK.REST -> Модули
Пример подмодуля
<?php
namespace BIK\Rest\Modules;
use BIK\Rest\Admin\Core\IconCollection;
use BIK\Rest\Admin\Core\PageOption;
use BIK\Rest\Admin\Core\PageOptionList;
use BIK\Rest\Admin\Core\PageTabList;
class CustomModule extends AbstractModule
{
/*
* Уникальный идентификатор
*/
public static function setID(): string
{
return 'custom_module';
}
/*
* Описание модуля
*/
public static function setDescription(): string
{
return 'Описание модуля';
}
/*
* Заголовок страницы и пункта меню
*/
public static function setTitle(): string
{
return 'Интеграция Custom Module';
}
/*
* Иконка пункта меню
*
* Функция должна возвращать css класс иконки; если иконка не требуется, можно вернуть пустую строку
* Класс IconCollection включает в себя набор css классов стандартных иконок, которые используются в Bitrix
*/
protected static function setIcon(): string
{
return IconCollection::CLOUDS_MENU_ICON;
}
/*
* Вкладки
*
* Функция должна возвращать объект PageTabList
* Для добавления вкладки необходимо создать объект класса PageTabList и вызвать метод add, передав в качестве аргумента ID вкладки и её заголовок
*/
protected static function setTabs(): PageTabList
{
$list = new PageTabList();
$list
->add("base", "Основное");
return $list;
}
/*
* Список конфигураций
*
* Каждая вкладка может содержат список своих конфигураций
* Функция должна возвращать объект PageOptionList
*
* Для добавления конфигурации необходимо создать объект класса PageOptionList и вызвать метод add
* Метод add принимает в качестве первого аргумента ID таба, указанный ранее в методе setTabs, и вторым аргументом - объект класса PageOption
*
* Объект PageOption
* setTitle - задает заголовок конфигурации, обязательный метод
* setInputType - задает тип поля, можно использовать PageOption::INPUT, PageOption::SELECT, PageOption::TEXTAREA, обязательный метод
* setName - задает уникальный идентификатор, обязательный метод
* setHint - задает подсказку, необязательный метод
* setDefaultValue - задает значение по умолчанию, необязательный метод
* setSelectOptions - задает список option для типа select(PageOption::SELECT), обязательный метод
*
* К значениям созданных конфигураций можно получить доступ так: \Bitrix\Main\Config\Option::get('bik.rest', 'уникальный идентификатор из setName');
*/
protected static function setOptions(): PageOptionList
{
$optionList = new PageOptionList();
return $optionList
->add("base",
(new PageOption())
->setTitle('Хост')
->setInputType(PageOption::INPUT)
->setName('cs_host')
)
->add("base",
(new PageOption())
->setTitle('Логин')
->setInputType(PageOption::INPUT)
->setName('cs_login')
)
->add("base",
(new PageOption())
->setTitle('Пароль')
->setInputType(PageOption::INPUT)
->setName('cs_password')
)
->add("base",
(new PageOption())
->setTitle('Создавать лиды на основе инфоблока "Формы обратной связи"')
->setInputType(PageOption::INPUT)
->setName('cs_enable_from_feedback')
->setDefaultValue(0)
->setSelectOptions([
0 => 'Нет',
1 => 'Да',
])
)
->add("base",
(new PageOption())
->setTitle('Свойство для размещения названия отправляемой формы')
->setInputType(PageOption::INPUT)
->setName('cs_lead_from_uf_form_name')
)
->add("base",
(new PageOption())
->setTitle('Свойство для размещения кода Ройстат')
->setInputType(PageOption::INPUT)
->setDefaultValue('UF_CRM_XXXXXXXXX')
->setName('cs_lead_uf_roistat')
);
}
}
Last modified: 19 июня 2025