An open API service indexing awesome lists of open source software.

https://github.com/izica/bitrix-migrations

1C Bitrix migrations
https://github.com/izica/bitrix-migrations

1c 1c-bitrix bitrix bitrix-cms bitrix-migrations bitrix-module cms cms-bitrix iblock iblock-form iblock-property migration migrations

Last synced: 9 months ago
JSON representation

1C Bitrix migrations

Awesome Lists containing this project

README

          

# Bitrix migrations
Миграции для CMS 1C Bitrix. Миграции также поддерживают стандартное апи CMS Bitrix

Методы появляются по мере востребованности, если нужно добавить метод, создавайте issue

## Установка
```
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
```
### Шаблоны
Библиотека имеет список встроенных шаблонов.
```markdown
* default - пустой шаблон
* iblocktype - создание типа инфоблока
* iblock - создание инфоблока
* iblock-property - создание свойства инфоблока
* iblock-catalog - создание каталога(инфоблока типа Торговый каталог)
```

Для создания собственных шаблонов их можно размещать в соседнюю с миграциями папку "template".

### Пример Миграции
```php
'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 инфоблока по его коду

```php

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');
}
}
```