arrilot/bitrix-hlblock-fields-fixer

This package is abandoned and no longer maintained. No replacement package was suggested.

0.1.1 2018-04-23 21:20 UTC

This package is auto-updated.

Last update: 2023-01-29 02:51:29 UTC


README

Latest Stable Version Total Downloads

Данный пакет больше активно не поддерживается

Причина - мы больше не используем Битрикс в своих проектах. Если вам интересен этот проект и вы хотите заняться его поддержкой - форкните его и создайте Issue в данном репозитории чтобы мы поместили здесь ссылку на форк.

Модификация полей создаваемых модулем highloadblock

Введение

Как известно, модуль highloadblock хранит элементы в произвольной таблице, причем каждое поле highload-блока представляет из себя столбец в этой таблице. Однако по историческим причинам, Битрикс весьма странно выбирает тип столбца под свойство, например строковое свойство хранится в столбце с типом text. Данный пакет позволяет переопределить типы полей для любых свойств хайлоадблоков, а также выполняет ряд самых полезных преобразований по-умолчанию.

Установка

1)composer require arrilot/bitrix-hlblock-fields-fixer

  1. добавляем в 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 Выполняется он только при добавлении нового свойства. При обновлении ничего испортить невозможно.