ge1i0n / bitrix-options
Requires
- php: >=8.1
- ext-mbstring: *
README
Bitrix Options - генератор форм настроек в административной панели Битрикс
Поддержка версий
BitrixOptions | mpm.options | php |
---|---|---|
1.0+ | 1.0+ | 7.0+ |
1.0+, 2.0+ | 2.0+ | 8.1+ |
Установка через маркетплейс
- Установить модуль mpm.options из маркетплейса bitrix.
- Создать файл настроек модуля (options.php или подобный)
- Подключить модуль и вызвать генератор формы, передав нужные параметры
Bitrix\Main\Loader::includeModule('mpm.options'); Form::make('youmodule.id', [ Tab::make('first', 'Первая вкладка', []), Tab::make('second', 'Вторая вкладка', []), ]);
Установка через composer
- Установить пакет
ge1i0n/bitrix-options
composer require ge1i0n/bitrix-options
- Создать файл настроек модуля (options.php или подобный)
- Подключить вызвать генератор, передав нужные параметры
Gelion\BitrixOptions\Form::make('youmodule.id', [ Gelion\BitrixOptions\Tab::make('first', 'Первая вкладка', [ Gelion\BitrixOptions\Fields\Text::make('TEXT'), ]), Gelion\BitrixOptions\Tab::make('second', 'Вторая вкладка', [ Gelion\BitrixOptions\Fields\Number::make('NUMBER'), ]), ]);
Пример установки в свой модуль для маркетплейса
- Скопировать пакет к себе в модуль
- Зарегистрировать классы модуля в файле
include.php
, прописав вручную корректные пути к классам, или загрузив автолоадером. Зарегистрировать вручную можно например так:Bitrix\Main\Loader::registerAutoLoadClasses('youmodule.id', [ 'Gelion\\BitrixOptions\\Tab' => '/lib/Tab.php', 'Gelion\\BitrixOptions\\Form' => '/lib/Form.php', 'Gelion\\BitrixOptions\\Enums\\Color' => '/lib/Enums/Color.php', 'Gelion\\BitrixOptions\\Enums\\Width' => '/lib/Enums/Width.php', 'Gelion\\BitrixOptions\\Enums\\Height' => '/lib/Enums/Height.php', 'Gelion\\BitrixOptions\\Enums\\Resize' => '/lib/Enums/Resize.php', 'Gelion\\BitrixOptions\\Enums\\Display' => '/lib/Enums/Display.php', 'Gelion\\BitrixOptions\\Enums\\TagColor' => '/lib/Enums/TagColor.php', 'Gelion\\BitrixOptions\\Enums\\AlertIcon' => '/lib/Enums/AlertIcon.php', 'Gelion\\BitrixOptions\\Enums\\AlertSize' => '/lib/Enums/AlertSize.php', 'Gelion\\BitrixOptions\\Enums\\TextStyle' => '/lib/Enums/TextStyle.php', 'Gelion\\BitrixOptions\\Enums\\AlertTextPosition' => '/lib/Enums/AlertTextPosition.php', 'Gelion\\BitrixOptions\\Fields\\Date' => '/lib/Fields/Date.php', 'Gelion\\BitrixOptions\\Fields\\Text' => '/lib/Fields/Text.php', 'Gelion\\BitrixOptions\\Fields\\Alert' => '/lib/Fields/Alert.php', 'Gelion\\BitrixOptions\\Fields\\Email' => '/lib/Fields/Email.php', 'Gelion\\BitrixOptions\\Fields\\Number' => '/lib/Fields/Number.php', 'Gelion\\BitrixOptions\\Fields\\Select' => '/lib/Fields/Select.php', 'Gelion\\BitrixOptions\\Fields\\Heading' => '/lib/Fields/Heading.php', 'Gelion\\BitrixOptions\\Fields\\Checkbox' => '/lib/Fields/Checkbox.php', 'Gelion\\BitrixOptions\\Fields\\Textarea' => '/lib/Fields/Textarea.php', 'Gelion\\BitrixOptions\\Fields\\Condition' => '/lib/Fields/Condition.php', 'Gelion\\BitrixOptions\\Fields\\HtmlEditor' => '/lib/Fields/HtmlEditor.php', 'Gelion\\BitrixOptions\\Fields\\ColorPicker' => '/lib/Fields/ColorPicker.php', 'Gelion\\BitrixOptions\\Traits\\WithTag' => '/lib/Traits/WithTag.php', 'Gelion\\BitrixOptions\\Traits\\WithHint' => '/lib/Traits/WithHint.php', 'Gelion\\BitrixOptions\\Traits\\WithColor' => '/lib/Traits/WithColor.php', 'Gelion\\BitrixOptions\\Traits\\WithModuleId' => '/lib/Traits/WithModuleId.php', 'Gelion\\BitrixOptions\\Traits\\WithStyleClass' => '/lib/Traits/WithStyleClass.php', 'Gelion\\BitrixOptions\\Traits\\WithDisplayWithoutValue' => '/lib/Traits/WithDisplayWithoutValue.php', ]);
🧩 Новые типы полей (v2.x)
Поле | Назначение |
---|---|
Date |
Поле Text с типом date |
Email |
Поле Text с типом email |
Heading |
Поле, выводящий заголовок |
Select |
Замена полям Dropdown и Multiselect |
Дополнительные, свои типы полей больше не нужно регистрировать отдельно, можете использовать их непосредственно в конструкторе формы.
Схема работы
На странице настроек необходимо вызвать генератор формы, в который передаётся id вашего модуля.
Gelion\BitrixOptions\Form::make('youmodule.id', []);
Вторым параметром в генератор формы передаётся массив табов на странице формы. Необходимо передать как минимум один таб, для корректной генерации и заполнения страницы.
Gelion\BitrixOptions\Form::make('youmodule.id', [ Gelion\BitrixOptions\Tab::make('first', 'Первая вкладка', []), ]);
В таб, вторым параметром передаётся массив полей для отображения. В отличие от первой версии пакета - порядок задаётся не полем сортировки, а непосредственно порядком передачи в массиве.
Gelion\BitrixOptions\Form::make('youmodule.id', [ Gelion\BitrixOptions\Tab::make('first', 'Первая вкладка', [ Gelion\BitrixOptions\Fields\Text::make('TEXT'), ]), ]);
Типы полей
Общая информация
Все типы полей отображается через статичный метод make()
, в который передаётся один или два параметра - ключ в базе
данных и строка для вывода пояснения.
Для типов полей который выводят данные, но ничего не хранят, передаётся один параметр.
В случае передачи одного параметра в поля, которые отображают данные настроек ключ будет использован как строка
пояснения.
Также, все методы, которые наследуются от поля Text имеют общие Fluent методы. Они будут описаны только в текстовом
поле, повторяться не будут.
Заголовок
Новый тип поля, заменяющий группы полей в предыдущей версии модуля. Больше нет необходимости делать группировку, просто выведите заголовок в нужном месте, передав в него текст для вывода.
\Gelion\BitrixOptions\Fields\Heading::make('Я заголовок группы');
Предупреждение
Вывод информационного сообщения, с настраиваемым размером, расположением текста и иконкой. Поле можно модифицировать через текучий интерфейс, передав в методы Enum необходимых значений свойств. документации Bitrix
\Gelion\BitrixOptions\Fields\Alert::make('Я предупрждение') ->setIcon(\Gelion\BitrixOptions\Enums\AlertIcon::INFO) ->setSize(\Gelion\BitrixOptions\Enums\AlertSize::XS) ->setTextPosition(\Gelion\BitrixOptions\Enums\AlertTextPosition::CENTER);
Текст
Вывод простого текстового поля - базовый компонент для большинства других полей. Поле можно модифицировать через текучий интерфейс, передав в методы Enum, необходимых значений, сами значения, а иногда и замыкания в зависимости от типа свойства.
\Gelion\BitrixOptions\Fields\Text::make('TEXT_OPTION', 'Я текстовое поле') ->disabled(true) ->readonly(true) ->setDefault('default') ->setAutocomplete('username') ->setHint('Я строка подсказки') ->setPlaceholder('Я строка плейсхолдер') ->setStyle(\Gelion\BitrixOptions\Enums\TextStyle::ROUND) ->setDisplay(\Gelion\BitrixOptions\Enums\Display::BLOCK) ->setTag('Я строка тега', \Gelion\BitrixOptions\Enums\TagColor::SUCCESS) ->setHeight(\Gelion\BitrixOptions\Enums\Height::MD) ->setWidth(\Gelion\BitrixOptions\Enums\Width::W75) ->setColor(\Gelion\BitrixOptions\Enums\Color::SUCCESS);
Дата
Вывод поля для даты - текстовое поле, но с типом date.
\Gelion\BitrixOptions\Fields\Date::make('DATE_OPTION', 'Я поле даты');
Вывод поля для электронной почты - текстовое поле, но с типом email.
\Gelion\BitrixOptions\Fields\Email::make('EMAIL_OPTION', 'Я поле электронной почты');
Number
Вывод поля для чисел - текстовое поле, но с типом number.
Имеет три дополнительных метода min()
, max()
, step()
.
\Gelion\BitrixOptions\Fields\Number::make('NUMBER_OPTION', 'Я поле ввода чисел') ->min(0) ->max(10) ->step(2);
Checkbox
Вывод переключателя, основан на текстовом поле.
Хранит значения в базе в формате Y
и N
, выводится в виде чекбокса.
\Gelion\BitrixOptions\Fields\Checkbox::make('CHECKBOX_OPTION', 'Я поле ввода чекбокса');
ColorPicker
Вывод поля для выбора цвета, основано на текстовом поле.
Имеет два дополнительных метода cols()
, rows()
.
Обратите внимание - при сохранении страницы, но не выбранном цвете по-умолчанию будет всегда сохраняться чёрный цвет.
\Gelion\BitrixOptions\Fields\ColorPicker::make('CHECKBOX_OPTION', 'Я поле ввода чекбокса');
Textarea
Поле для ввода многострочного ввода данных, основано на текстовом поле. На данный момент реализованы все способы изменять состояния поля, но не все они ведут себя корректно.
\Gelion\BitrixOptions\Fields\Textarea::make('TEXTAREA_OPTION', 'Я поле многостраничного ввода') ->setResize(\Gelion\BitrixOptions\Enums\Resize::RESIZE_X) ->cols(10) ->rows(10);
Select
Селектор для выбора значений из списка, основано на текстовом поле.
Имеет три дополнительных метода options()
- для передачи опций выбора, size()
- для передачи атрибута size,
multiple()
- для включения множественного выбора.
\Gelion\BitrixOptions\Fields\Select::make('SELECT_OPTION', 'Я поле выбора из списка') ->options([ 'key-1' => 'Вариант 1', 'key-2' => 'Вариант 2', ]) ->size() ->multiple();
HtmlEditor
Текстовый редактор, с возможностью переключаться между типами text, html и визуальный редактор.
\Gelion\BitrixOptions\Fields\HtmlEditor::make('HTML_EDITOR_OPTION', 'Я поле редактора') ->setHint('Я строка подсказки');
Condition
Поле выбора условий, основанное на классе CCatalogCondTree.
\Gelion\BitrixOptions\Fields\Condition::make('CONDITION_OPTION', 'Я поле условия');
📚 Дополнительно
- Документация по UI Bitrix: dev.1c-bitrix.ru