proklung/ bitrix.module.boilerplate
Bitrix模块的PHP样板
1.0.4
2023-05-15 05:35 UTC
Requires
- php: >=7.3
Requires (Dev)
README
描述
目标:最小化编写模块时的代码重复。
功能
模块设置适配器
简单封装 Bitrix\Main\Config\Option
模块设置页面
标准模块设置页面。
ModuleUtilsTrait
标准模块的功能。
文件 /install/index.php
use Bitrix\Main\Localization\Loc; use ProklUng\Module\Boilerplate\Module; use ProklUng\Module\Boilerplate\ModuleUtilsTrait; Loc::loadMessages(__FILE__); class example_module extends CModule { use ModuleUtilsTrait; public function __construct() { $arModuleVersion = []; include __DIR__.'/version.php'; if (is_array($arModuleVersion) && array_key_exists('VERSION', $arModuleVersion)) { $this->MODULE_VERSION = $arModuleVersion['VERSION']; $this->MODULE_VERSION_DATE = $arModuleVersion['VERSION_DATE']; } $this->MODULE_FULL_NAME = 'module'; $this->MODULE_VENDOR = 'example'; $prefixLangCode = 'MODULE'; $this->MODULE_NAME = Loc::getMessage($prefixLangCode.'_MODULE_NAME'); $this->MODULE_ID = $this->MODULE_VENDOR.'.'.$this->MODULE_FULL_NAME; $this->MODULE_DESCRIPTION = Loc::getMessage($prefixLangCode.'_MODULE_DESCRIPTION'); $this->MODULE_GROUP_RIGHTS = 'N'; $this->PARTNER_NAME = Loc::getMessage($prefixLangCode.'_MODULE_PARTNER_NAME'); $this->PARTNER_URI = Loc::getMessage($prefixLangCode.'MODULE_PARTNER_URI'); $this->moduleManager = new Module( [ 'MODULE_ID' => $this->MODULE_ID, 'VENDOR_ID' => $this->MODULE_VENDOR, 'MODULE_VERSION' => $this->MODULE_VERSION, 'MODULE_VERSION_DATE' => $this->MODULE_VERSION_DATE, 'ADMIN_FORM_ID' => $this->MODULE_VENDOR.'_settings_form', ] ); $this->moduleManager->addModuleInstance($this); // Регистрация экземпляра модуля. $this->options(); // Подготовка данных для генерации админки модуля } }
接下来,根据需要可以覆盖模块的标准方法(例如 InstallEvents()
)。
模块
通过此样板注册到系统中的模块的管理器。
- showOptionsForm - 输出模块设置表单。
- getOptionsManager -
Options\ModuleManager
类的实例。模块设置。 - addModuleInstance($moduleObject) - 静态。添加模块实例。从
CModule
继承的对象。 - getModuleInstance(string $moduleId) - 静态。通过 ID 获取模块类实例。
模块选项
通过 Options\ModuleManager
类的 addOption
方法(以及批量 - addOptions
)添加。
模块选项菜单
在模块的基类中应该继承方法 getSchemaTabsAdmin
,它用数组描述标签方案。
protected function getSchemaTabsAdmin() : array { // Все возможные параметры - https://dev.1c-bitrix.ru/api_help/main/general/admin.section/rubric_edit.php return ['tab1' => [ 'TAB' => 'Таб 1', 'TITLE' => 'Таб 1', ], 'tab2' => [ 'TAB' => 'Таб 2', 'TITLE' => 'Таб 2', ] ]; }
还应该继承方法 getSchemaOptionsAdmin
,它返回模块选项与标签的关联方案。
protected function getSchemaOptionsAdmin() : array { return [ 'Test_option_1' => [ 'label' => 'Тестовая опция 1', 'tab' => 'tab1', // На каком табе будет показываться input 'type' => 'text', // Тип input-а ], 'Test_option_2' => [ 'label' => 'Тестовая опция 2', 'tab' => 'tab2', // На каком табе будет показываться input 'type' => 'text', // Тип input-а ], ]; }