izica / bitrix-migrations
Bitrix CMS 迁移
3.6.1
2023-04-09 00:56 UTC
Requires
- php: >=5.6.0
README
1C Bitrix CMS 迁移。迁移还支持标准 Bitrix CMS API
方法根据需求出现,如需添加方法,请创建问题
安装
composer require izica/bitrix-migrations
配置
运行 init 脚本,在脚本所在的文件夹中,将创建 migrations 文件夹和所有必要的文件。脚本参数
- --root - 相对于 DOCUMENT_ROOT 的相对路径(必填参数)
- --directory - 迁移将创建的目录名称(默认 'migrations')
- --file - 迁移将创建的文件名称(默认 'bxm')
创建的文件夹结构如下
- migrations
- bxm
- migration - 这里将存放迁移
- template - 这里存放模板
从 local 文件夹启动示例
php php_interface/vendor/izica/bitrix-migrations/bxm.php init --root=../
从 local/php_interface 文件夹启动示例
php vendor/izica/bitrix-migrations/bxm.php init --root=../../
迁移
命令
要查看所有可用的命令,请输入
php bxm
List of available commands:
migrate -- start migrations
migration -- create migration
create -- create migration(same thing as migration)
rollback -- rollback last migration
reset -- reset migrations
创建迁移
php bxm create create-news-iblock
也提供模板
php bxm create create-iblock-news --template={templateName}
php bxm create create-iblock-news --template=iblock
模板
库具有内置模板列表。
* default - пустой шаблон * iblocktype - создание типа инфоблока * iblock - создание инфоблока * iblock-property - создание свойства инфоблока * iblock-catalog - создание каталога(инфоблока типа Торговый каталог)
要创建自己的模板,可以将它们放在与迁移相邻的 "template" 文件夹中。
迁移示例
<?php use Izica\Migration; use CModule; class CreateIblockNews_1550830432 extends Migration { public function up() { CModule::IncludeModule('iblock'); $obIblock = new CIBlock; $arFields = [ "ACTIVE" => 'Y', "NAME" => 'Новости', "CODE" => 'news', "IBLOCK_TYPE_ID" => 'info', "SITE_ID" => ["s1"], "GROUP_ID" => ["2" => "D", "3" => "R"] ]; $nId = $obIblock->Add($arFields); $this->log('CIBlock news created'); } public function down() { CModule::IncludeModule('iblock'); CIBlock::Delete($this->getIblockIdByCode('news')); $this->log('CIBlock news deleted'); } }
Migration 类的额外功能
- log($message, $code) - 在迁移过程中在控制台输出消息
- set($key, $value) - 将数据保存到迁移缓冲区,例如在创建信息块属性时很有用。
- get($key) - 从缓冲区获取数据。
- getIblockIdByCode($code) - 通过代码获取信息块 ID
<? class Example extends Migration { public function up() { /* * тут создается свойсво */ $nPropertyId = $obProperty->Add($arFields); $this->set('PROPERTY_CODE', $nPropertyId); $this->log('CIBlock news created'); } public function down() { CModule::IncludeModule('iblock'); $nPropertyId = $this->get('PROPERTY_CODE'); CIBlockProperty::Delete($nPropertyId); $this->log('Property PROPERTY_CODE deleted'); } }