arrilot / bitrix-hlblock-fields-fixer

该包已被废弃,不再维护。未建议替代包。

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

该包不再活跃支持

原因是我们不再在我们的项目中使用Bitrix。如果您对这个项目感兴趣并想支持它 - 分支它并在该存储库中创建一个Issue,以便我们在这里放置分支的链接。

修改由highloadblock模块创建的字段

简介

众所周知,highloadblock模块将元素存储在任意表中,其中每个highload块的字段代表该表中的一个列。然而,由于历史原因,Bitrix在将列类型映射为属性时相当奇怪,例如,字符串属性存储在类型为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。它仅在添加新属性时执行。在更新时,不可能损坏任何内容。