webarchitect609/bitrix-user-type
Composer 安装命令:
composer require webarchitect609/bitrix-user-type
包简介
Set of custom Bitrix user property types and basic auxiliary functionality to help develop new types as easy and fast as it possible.
README 文档
README
Набор типов пользовательских свойств, а также базовый функционал, призванный максимально упростить и ускорить разработку новых типов пользовательских свойств.
Пока нестабильная версия - будьте внимательны!
Если вы хотите создавать свои типы свойств элемента инфоблока, то вам нужен пакет webarchitect609/bitrix-iblock-property-type
Как использовать
1 Установить через composer
composer require webarchitect609/bitrix-user-type
2 В init.php как можно раньше(выше) инициализировать используемые типы пользовательских свойств (подробнее - см. "Известные проблемы" #1). Например,
\WebArch\BitrixUserPropertyType\IblockSectionLinkType::init();
Либо воспользоваться менеджером:
<?php use WebArch\BitrixUserPropertyType\HyperLinkType; use WebArch\BitrixUserPropertyType\IblockSectionLinkType; use WebArch\BitrixUserPropertyType\Utils\UserTypeManager; use WebArch\BitrixUserPropertyType\WeekDayType; use WebArch\BitrixUserPropertyType\StoreListType; (new UserTypeManager([ HyperLinkType::class, IblockSectionLinkType::class, WeekDayType::class, StoreListType::class ]))->init();
3 Теперь можно создавать новые пользовательские поля, выбрав свойство нового типа!
Список пользовательских свойств пакета
- "Гиперссылка". Пользовательское свойство, реализующее валидную гиперссылку.
WebArch\BitrixUserPropertyType\HyperLinkType - "Привязка к разделу инфоблока(с окном поиска)". Позволяет удобно указать раздел, выбрав его из всплывающего окна.
WebArch\BitrixUserPropertyType\IblockSectionLinkType - "День недели". Позволяет реализовать привязку к дню недели (ISO-8601).
WebArch\BitrixUserPropertyType\WeekDayType - "Привязка к складу". Реализует привязку к складу по его XML_ID.
WebArch\BitrixUserPropertyType\StoreListType - "Привязка к местоположению". Реализует привязку к местоположению Bitrix по его коду.
WebArch\BitrixUserPropertyType\LocationType
Как разработать свой тип свойства
1 Наследовать свой тип от базовой реализации \WebArch\BitrixUserPropertyType\Abstraction\UserTypeBase или
самостоятельно реализовать интерфейс \WebArch\BitrixUserPropertyType\Abstraction\UserTypeInterface.
2 Определить обязательный статический метод getDBColumnType(), используя один из подходящих трейтов из namespace
WebArch\BitrixUserPropertyType\Abstraction\DbColumnType
3 Определить другие обязательные методы, такие как getBaseType(), getDescription() и т.д., которые требует
\WebArch\BitrixUserPropertyType\Abstraction\UserTypeInterface
4 При необходимости реализации других поддерживаемых методов следует рассмотреть и реализовать интерфейсы из namespace
\WebArch\BitrixUserPropertyType\Abstraction\Custom
5 Инициализировать свой тип свойства в init.php
MyUserType::init();
6 Теперь можно создавать новые пользовательские поля, выбрав свойство нового типа!
Известные проблемы
#1 Ошибка "Bitrix\Main\SystemException: Unknown field definition UF_YOUR_TYPE" при работе с HL-блоками или общая ошибка неинициализации типа пользовательского свойства.
Возможная причина
Инициализация типа пользовательского свойства в init.php происходит позже, чем сборка сущности для любого HL-блока
\Bitrix\Highloadblock\HighloadBlockTable::compileEntity(), которая в свою очередь приводит к вызову
\CUserTypeManager::GetUserType() и набору кеша в \CUserTypeManager::$arUserTypes, который больше не обновлятся и в
который не попадают никакие вновь инициализированные типы пользовательских полей.
Способ устранения
Инициализация типов пользовательских свойств должна происходить раньше, чем самый первый вызов
\Bitrix\Highloadblock\HighloadBlockTable::compileEntity() или \CUserTypeManager::GetUserType().
统计信息
- 总下载量: 18.74k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 14
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-06-05