ge1i0n/bitrix-options

1.4.1 2023-02-22 13:42 UTC

This package is auto-updated.

Last update: 2024-09-22 17:03:39 UTC


README

Latest Stable Version Total Downloads

Bitrix Options - 生成Bitrix管理面板中的设置表单

通过市场平台安装

  1. 从bitrix市场平台安装mpm.options模块
  2. 创建模块配置文件(options.php或类似)
  3. 连接模块并调用生成器,传递必要的参数
    Bitrix\Main\Loader::includeModule('mpm.options');
    Gelion\BitrixOptions\Form::generate('youmodule.id', $options);

通过composer安装

  1. 安装包ge1i0n/bitrix-options
    composer require ge1i0n/bitrix-options
  2. 创建模块配置文件(options.php或类似)
  3. 连接并调用生成器,传递必要的参数
    Gelion\BitrixOptions\Form::generate('youmodule.id', $options);

在市场平台模块中安装示例

  1. 将包复制到自己的模块中
  2. 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,
]);

已注册的选项类型,在名称匹配的情况下将覆盖标准类型。