arrilot / bitrix-hlblock-fields-fixer
Installs: 1 588
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2023-01-29 02:51:29 UTC
README
Данный пакет больше активно не поддерживается
Причина - мы больше не используем Битрикс в своих проектах. Если вам интересен этот проект и вы хотите заняться его поддержкой - форкните его и создайте Issue в данном репозитории чтобы мы поместили здесь ссылку на форк.
Модификация полей создаваемых модулем highloadblock
Введение
Как известно, модуль highloadblock хранит элементы в произвольной таблице, причем каждое поле highload-блока представляет из себя столбец в этой таблице. Однако по историческим причинам, Битрикс весьма странно выбирает тип столбца под свойство, например строковое свойство хранится в столбце с типом text. Данный пакет позволяет переопределить типы полей для любых свойств хайлоадблоков, а также выполняет ряд самых полезных преобразований по-умолчанию.
Установка
1)composer require arrilot/bitrix-hlblock-fields-fixer
- добавляем в init.php
require $_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php"; Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register();
Использование
По-умолчанию, пакет производит следующие преобразования:
// тип поля => тип столбца в mysql // 'string' => 'varchar(255)', // 'string_formatted' => 'varchar(255)', // 'text' => 'text', // 'boolean' => 'tinyint(1)',
string - строка string_formatted - шаблон text - строка/шаблон в случае если при создании в поле "Количество строчек поля ввода:" указано более 1.
Можно добавить дополнительные или переписать существующие при помощи массива конфигурации:
Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register(['text' => 'longtext']);
Данная строчка затронет лишь преобразования для поля text, все остальные преобразования по-умолчанию продолжат работать. Для того чтобы выключить какое-то преобразование можно задать ему null.
Как это работает
На событие OnAfterUserTypeAdd
добавлен обработчик который выполняет ALTER TABLE MODIFY COLUMN
Выполняется он только при добавлении нового свойства. При обновлении ничего испортить невозможно.