ge1i0n / bitrix-options
1.4.1
2023-02-22 13:42 UTC
Requires
- php: >=7.3.0
README
Bitrix Options - 生成Bitrix管理面板中的设置表单
通过市场平台安装
- 从bitrix市场平台安装mpm.options模块
- 创建模块配置文件(options.php或类似)
- 连接模块并调用生成器,传递必要的参数
Bitrix\Main\Loader::includeModule('mpm.options'); Gelion\BitrixOptions\Form::generate('youmodule.id', $options);
通过composer安装
- 安装包
ge1i0n/bitrix-options
composer require ge1i0n/bitrix-options
- 创建模块配置文件(options.php或类似)
- 连接并调用生成器,传递必要的参数
Gelion\BitrixOptions\Form::generate('youmodule.id', $options);
在市场平台模块中安装示例
- 将包复制到自己的模块中
- 在
include.php
文件中注册模块类,并指定正确的类路径。Bitrix\Main\Loader::registerAutoLoadClasses('youmodule.id', [ 'Gelion\\BitrixOptions\\Form' => '/lib/Form.php', 'Gelion\\BitrixOptions\\TypeInterface' => '/lib/TypeInterface.php', 'Gelion\\BitrixOptions\\TypeBase' => '/lib/TypeBase.php', 'Gelion\\BitrixOptions\\TypeForm' => '/lib/TypeForm.php', 'Gelion\\BitrixOptions\\Types\\Alert' => '/lib/Types/Alert.php', 'Gelion\\BitrixOptions\\Types\\Checkbox' => '/lib/Types/Checkbox.php', 'Gelion\\BitrixOptions\\Types\\Colorpicker' => '/lib/Types/Colorpicker.php', 'Gelion\\BitrixOptions\\Types\\Conditions' => '/lib/Types/Conditions.php', 'Gelion\\BitrixOptions\\Types\\Dropdown' => '/lib/Types/Dropdown.php', 'Gelion\\BitrixOptions\\Types\\HtmlEditor' => '/lib/Types/HtmlEditor.php', 'Gelion\\BitrixOptions\\Types\\MultiSelect' => '/lib/Types/MultiSelect.php', 'Gelion\\BitrixOptions\\Types\\Number' => '/lib/Types/Number.php', 'Gelion\\BitrixOptions\\Types\\Text' => '/lib/Types/Text.php', 'Gelion\\BitrixOptions\\Types\\Textarea' => '/lib/Types/Textarea.php', ]);
生成器中的参数结构
生成器接收一个数组,包含页面设置中的标签页、组和选项。
$options = [ [ 'DIV' => 'settings', 'TAB' => 'Новая вкладка', 'TITLE' => 'Новая вкладка', 'ICON' => '', 'GROUPS' => [ 'GROUP_CODE' => [ 'TITLE' => 'Название группы', 'OPTIONS' => [] ], ], ], ];
在组内的OPTIONS
中传递一个选项数组,其中键是数据库中选项的ID。
选项类型
字符串
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'STRING', 'FIELDS' => [ 'TITLE' => 'Поле "Строка"', 'DEFAULT' => 'Значение по умолчанию', 'NOTES' => 'Это подсказка к полю "Строка"', 'PLACEHOLDER' => 'Это плейсхолдер к полю "Строка"', 'TAG' => 'Текст на теге', 'READONLY' => false, 'DISABLED' => false, 'AUTOCOMPLETE' => false, ], ],
数字
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'NUMBER', 'FIELDS' => [ 'TITLE' => 'Поле "Число"', 'DEFAULT' => 42, 'NOTES' => 'Это подсказка к полю "Число"', 'PLACEHOLDER' => 'Это плейсхолдер к полю "Число"', 'TAG' => 'Текст на теге', 'READONLY' => false, 'DISABLED' => false, 'AUTOCOMPLETE' => false, 'STEP' => 1, 'MIN' => 0, 'MAX' => 100, ], ],
文本
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'TEXTAREA', 'FIELDS' => [ 'TITLE' => 'Поле "Текст"', 'DEFAULT' => 'Значение по умолчанию', 'NOTES' => 'Это подсказка к полю "Текст"', 'PLACEHOLDER' => 'Это плейсхолдер к полю "Текст"', 'TAG' => 'Текст на теге', 'READONLY' => false, 'DISABLED' => false, 'AUTOCOMPLETE' => false, 'COLS' => 5, 'ROWS' => 10, ], ],
复选框
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'CHECKBOX', 'FIELDS' => [ 'TITLE' => 'Поле "Чекбокс"', 'DEFAULT' => 'Y', 'NOTES' => 'Это подсказка к полю "Чекбокс"', ], ],
选择颜色
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'COLORPICKER', 'FIELDS' => [ 'TITLE' => 'Поле "Выбор цвета"', 'NOTES' => 'Это подсказка к полю "Выбор цвета"', 'DEFAULT' => '#FFFFFF', ], ],
下拉列表
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'DROPDOWN', 'FIELDS' => [ 'TITLE' => 'Поле "Список"', 'DEFAULT' => 'val-2', 'NOTES' => 'Это подсказка к полю "Список"', 'TAG' => 'Текст на теге', 'OPTIONS' => [ [ 'TITLE' => 'Первое свойство', 'VALUE' => 'val-1', ], [ 'TITLE' => 'Второе свойство', 'VALUE' => 'val-2', ], ], ], ],
多选列表
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'MULTISELECT', 'FIELDS' => [ 'TITLE' => 'Поле "множественный список"', 'DEFAULT' => serialize(['val-1','val-2']), 'NOTES' => 'Это подсказка к полю "множественный список"', 'TAG' => 'Текст на теге', 'OPTIONS' => [ [ 'TITLE' => 'Первое свойство', 'VALUE' => 'val-1', ], [ 'TITLE' => 'Второе свойство', 'VALUE' => 'val-2', ], ], ], ],
HTML编辑器
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'HTMLEDITOR', 'FIELDS' => [ 'TITLE' => 'Поле "HTML-редактор"', 'NOTES' => 'Это подсказка к полю "HTML-редактор"', ], 'PARAMS' => [ 'WIDTH' => '100%', 'HEIGHT' => '500', 'PHP' => false, 'TASKBAR' => false, ] ],
条件
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'CONDITIONS', 'FIELDS' => [ 'TITLE' => 'Поле "Условия"', 'NOTES' => 'Это подсказка к полю "Условия"', ], ],
消息
此选项不保存任何内容到数据库,但允许在设置页面上显示信息消息。选项有自己的参数,下面可以阅读。
'PROP_ID' => [ 'SORT' => 100, 'TYPE' => 'ALERT', 'FIELDS' => [ 'TITLE' => 'Поле "Сообщения"', ], ],
选项修饰符
对于"表单"类别的选项,可以传递影响表单在页面上显示的额外参数。有关接受参数及其值的详细信息,请参阅Bitrix文档。此外,基类中定义了额外的参数。
'PROP_ID' => [ 'FIELDS' => [], 'PARAMS' => [ 'DISPLAY' => 'block', 'WIDTH' => 'wd', 'HEIGHT' => 'md', 'COLOR' => 'default', 'TAGCOLOR' => 'default', 'MODIFICATOR' => false, ], ],
"消息"选项的默认参数。有关可用参数及其值的详细信息,请参阅Bitrix文档。
'PROP_ID' => [ 'FIELDS' => [], 'PARAMS' => [ 'DISPLAY' => false, 'HEIGHT' => false, 'COLOR' => 'default', 'ICON' => false, ], ],
额外的选项类型
要创建自己的选项类型,需要创建自己的类,继承自TypeBase
类,并实现TypeInterface
接口。然后,在调用生成器之前,在某个地方注册类型名称和应该被初始化的类的映射。
Gelion\BitrixOptions\Form::typesRegister([ 'CUSTOM_TYPE' => MyCustomOptionType::class, ]);
已注册的选项类型,在名称匹配的情况下将覆盖标准类型。