- 1. Работа с инфоблоками. IblockBuilder.
- 2. Работа с таблицами. TableBuilder.
- 3. Работа с формами. FormBuilder.
- 4. Работа c событиями. EventsBuilder.
- 5. Работа c агентами. AgentBuilder.
- 6. Работа c HighLoad инфоблоками. HighLoadBlockBuilder.
Пример добавления типа инфоблока с помощью объекта IblockBuilder
<?php
use WS\ReduceMigrations\Builder\Entity\IblockType;
use WS\ReduceMigrations\Builder\IblockBuilder;
$builder = new IblockBuilder();
$builder->createIblockType('content', function (IblockType $type) {
$type
->inRss(false)
->sort(100)
->sections('Y')
->lang(
[
'ru' => [
'NAME' => 'Контент',
'SECTION_NAME' => 'Разделы',
'ELEMENT_NAME' => 'Элементы',
],
]
);
});
Метод createIblockType()
возвращает объект типа IblockType
и принимает два аргумента:
type
- строковый идентификатор типа инфоблокаcallback
- функция обратного вызова, принимает аргумент объект типаIblockType
.
Методы класса IblockType
:
inRss(boolean)
- экспорт в RSS. Аргумент типаboolean
- по умолчаниюtrue
sections(string)
- настройка возможности добавления разделов инфоблока. Возможные заначения'Y'
или'N'
lang(array)
- устанавливает языкозависимые названия и заголовки объектов. Принимает аргумент типаarray
sort(int)
- устанавливает значение сортировки. Принимает значение типаint
Также для настроки типа инфоблока можно воспользоватся методом setAttribute()
<?php
use WS\ReduceMigrations\Builder\Entity\IblockType;
use WS\ReduceMigrations\Builder\IblockBuilder;
$builder = new IblockBuilder();
$builder->createIblockType('content', function (IblockType $type) {
$type->setAttribute(
'lang',
[
'ru' => [
'NAME' => 'Контент',
'SECTION_NAME' => 'Разделы',
'ELEMENT_NAME' => 'Элементы',
],
]
);
});
Аргументы метода:
name
- название поля. Типstring
value
- значение сохраняемого поля
Пример добавления типа инфоблока с помощью объекта IblockBuilder
<?php
use WS\ReduceMigrations\Builder\Entity\Iblock;
use WS\ReduceMigrations\Builder\IblockBuilder;
$builder = new IblockBuilder();
$iblock = $builder->createIblock('content', 'Новости', function (Iblock $iblock) {
$iblock
->siteId('s1')
->sort(100)
->code('content')
->groupId(['2' => 'R']);
$iblock->setAttribute('DETAIL_PAGE_URL', '#SITE_DIR#/news/#CODE#');
$iblock
->setAttribute('FIELDS', [
'CODE' => [
'IS_REQUIRED' => 'Y',
'DEFAULT_VALUE' => [
'UNIQUE' => 'Y',
'TRANSLITERATION' => 'Y',
'TRANS_LEN' => '100',
'TRANS_CASE' => 'L',
'TRANS_SPACE' => '_',
'TRANS_OTHER' => '_',
'TRANS_EAT' => 'Y',
'USE_GOOGLE' => 'N',
]
],
'DETAIL_TEXT_TYPE' => [
'DEFAULT_VALUE' => 'html'
]
]);
// Добавление свойства типа 'Строка'
$iblock
->addProperty('Внешняя ссылка')
->code('REFERENCE')
->typeString()
->sort(100);
// Добавление свойства типа 'Привязка к елементам'
$iblock
->addProperty('Товары')
->code('GOODS')
->multiple()
->required()
->typeElement($iblockId);
// Добавление свойства типа 'Список'
$property = $iblock
->addProperty('Тип')
->code('TYPE')
->typeDropdown();
$property->addEnum('Новость дня')->xmlId('news_day');
$property->addEnum('Акция')->xmlId('news_action');
});
Метод createIblock()
возвращает объект типа Iblock
и принимает два аргумента:
type
- строковый идентификатор типа инфоблокаcallback
- функция обратного вызова, принимает аргумент объект типаIblock
. Используется для настройки инфоблока и добавления своиств
Методы класса Iblock
:
sort(int)
- устанавливает значение сортировки. Принимает значение типаint
siteId(string)
- устанавливает строковый идентификатор сайта. Принимает значение типаstring
code(string)
- устанавливает символьный код инфоблока. Принимает значение типаstring
groupId(array)
- настройки доступа. Принимает значение типаarray
addProperty(string)
- добавление свойства. Принимает значение типаstring
. Возвращает объект типаProperty
typeString()
- свойство типа 'Строка'typeDropdown()
- свойство типа 'Список'typeDropdown(iblockId)
- свойство типа 'Привязка к элементам'typeHtml()
- свойство типа 'HTML/текст'typeFile()
- свойство типа 'HTML/текст'->fileType(string)
- стрововое значение типа файлов'png, jpg, gif'
typeDateTime()
- свойство типа 'Дата/Время'typeDate()
- свойство типа 'Дата'typeVideo()
- свойство типа 'Видео'typeVideo()
- свойство типа 'Видео'typeCheckbox()
- свойство типа 'Checkbox'
Также для настроки инфоблока можно воспользоватся методом setAttribute()
Пример обновления типа инфоблока с помощью объекта IblockBuilder
<?php
use WS\ReduceMigrations\Builder\Entity\Iblock;
use WS\ReduceMigrations\Builder\IblockBuilder;
$builder = new IblockBuilder();
$builder->updateIblock($id, function (Iblock $iblock) {
$iblock
->addProperty('Страна')
->code('COUNTRY')
->typeElement($iblock->getId());
});
<?php
use WS\ReduceMigrations\Builder\Entity\Table;
use WS\ReduceMigrations\Builder\TableBuilder;
$tableBuilder = new TableBuilder();
$tableBuilder->create('favorite_table', function (Table $table) {
$table->integer('ID')
->autoincrement()
->primary();
$table->string('NAME');
$table->integer('ELEMENT_ID');
$table->datetime('DATE_CREATE')->autoincrement();
});
Метод create()
возвращает объект типа Table
и принимает два аргумента:
type
- строковое название таблицы в БДcallback
- функция обратного вызова, принимает аргумент объект типаTable
.
Методы класса Table
:
integer(name)
- добавляет поле типаint
. Принимает значение типаstring
string(name)
- добавляет поле типаstring
. Принимает значение типаstring
text(name)
- добавляет поле типаtext
. Принимает значение типаstring
datetime(name)
- добавляет поле типаdatetime
. Принимает значение типаstring
boolean(name)
- добавляет поле типаboolean
. Принимает значение типаstring
float(name)
- добавляет поле типаfloat
. Принимает значение типаstring
date(name)
- добавляет поле типаdate
. Принимает значение типаstring
Перечисленные методы классса создают и возвращают объект типа FieldWrapper
. Спомошью объекта FieldWrapper
можно задавать надстройки для полей:
primary()
- устанавливает идентификатор записи (первичный ключ)autoincrement()
- автоматическая запись уникального значения
<?php
use WS\ReduceMigrations\Builder\TableBuilder;
$tableBuilder = new TableBuilder();
$tableBuilder->drop('favorite_table');
Метод drop(name)
удаляет таблицу из базы данных по названию таблицы
<?php
use WS\ReduceMigrations\Builder\TableBuilder;
$tableBuilder = new TableBuilder();
$tableBuilder->addColumn('favorite_table', 'user_id', 'int');
Метод addColumn(table, name, typy)
добавляет колонку в таблицу, принимает следующие аргументы:
table
- строковое название таблицы в базе данныхname
- строковое название поляtype
- строковое название типа поля (text, varchar(100), date
)
<?php
use WS\ReduceMigrations\Builder\TableBuilder;
$tableBuilder = new TableBuilder();
$tableBuilder->dropColumn('favorite_table', 'user_id');
Метод dropColumn(table, name)
удаляет колонку из таблицы базы данных:
table
- строковое название таблицы в базе данныхname
- строковое название поля
<?php
use WS\ReduceMigrations\Builder\FormBuilder;
use WS\ReduceMigrations\Builder\Entity\Form;
use WS\ReduceMigrations\Builder\Entity\FormField;
$builder = new FormBuilder();
$newForm = $builder->addForm('bids_form', 'bids_form', function (Form $form) {
$form
->arSiteId(['s1'])
->sort(100)
->description('Description text')
->useCaptcha(true)
->arGroup(['2' => 10])
->arMenu(['ru' => 'Заявка посетителя', 'en' => 'Bid visitor'])
->descriptionType('html');
$form
->addField('question')
->fieldType(FormField::FIELD_TYPE_INTEGER)
->sort(33)
->active(false)
->required()
->title('title')
->arFilterAnswerText(['dropdown'])
->arFilterAnswerValue(['dropdown'])
->arFilterUser(['dropdown'])
->arFilterField(['integer'])
->comments('comment')
->addAnswer('Привет мир!');
$form
->addField('testField')
->asField()
->title('test')
;
$form
->addStatus('status')
->arGroupCanDelete([2])
->byDefault(true);
});
Метод addForm()
создает и возвращает объект типа Form
.
Аргументы метода:
name
- строковое название формыcallback
- функция обратного вызова, принимает аргумент типаForm
.
Описание методов класса Form
:
arSiteId(array)
- устанавливает привязку к сайтам. Принимает значение типаarray
sort(int)
- устанавливает сортировку формы. Принимает значение типаint
description(string)
- устанавливает описание формы. Принимает значение типаstring
descriptionType(string)
- устанавливает тип описания формы. Принимает значение типаstring
useCaptcha(boolean)
- использавать captcha. Принимает значение типаboolean
arGroup(array)
- настройки доступа. Принимает значение типаarray
arMenu(array)
- настройка пуктов меню в административном разделе. Принимает значение типаarray
addField(name)
- создает поле формы. Принимает значение типаstring
. Возвращает объект типаFormField
statEvent1(string)
- устанавливает идентификатор события. Принимает значение типаstring
setAttribute(name, value)
- устанавливает значение формы по идентификатору события.
Описание методов класса FormField
fieldType(string)
- задает тип поля формы (FormField::FIELD_TYPE_INTEGER, FormField::FIELD_TYPE_TEXT, FormField::FIELD_TYPE_DATE
)required()
- устанавливает обязательность поляactive(boolean)
- устанавливает активность поля. Принимает значение типаboolean
title(string)
- устанавливает заголовок поля. Принимает значение типаstring
comments(string)
- устанавливает служебный комментарий. Принимает значение типаstring
arFilterField(array)
- устанавливает фильтры поля. Принимает значение типаarray
addAnswer(string)
- добавление вопроса. Принимает значение типаstring
. Возвращает объект типаFormAnswer
arFilterUser(array)
- устанавливает фильтры для вводимого значения. Принимает значение типаarray
arFilterAnswerText(array)
- устанавливает значения для параметра [ANSWER_TEXT]. Принимает значение типаarray
arFilterAnswerValue(array)
- устанавливает значения для параметра [ANSWER_VALUE]. Принимает значение типаarray
filterTitle(string)
- устанавливает подпись к полю фильтра. Принимает значение типаstring
inResultsTable(boolean)
- устанавливает флаг показать в HTML-таблице результатов. Принимает значение типаboolean
inExcelTable(boolean)
- устанавливает флаг показать в Excel-таблице результатов. Принимает значение типаboolean
<?php
use WS\ReduceMigrations\Builder\FormBuilder;
use WS\ReduceMigrations\Builder\Entity\Form;
$builder = new FormBuilder();
$updatedForm = $builder->updateForm('bids_form', function (Form $form) {
$form->name('Заявка');
$field = $form
->updateField('question')
->active(true)
->required(false);
$field->removeAnswer('Привет мир!');
$field
->addAnswer('Ваше имя')
->value('name');
});
Метод updateForm(sid, name)
используется для обнавления параметров формы:
sid
- строковый идентификатор формыcallback
- функция обратного вызова, принимает аргумент типаForm
.
<?php
use WS\ReduceMigrations\Builder\FormBuilder;
$builder = new FormBuilder();
$builder->removeForm('bids_form');
Метод removeForm(sid)
используется для удаления формы:
sid
- строковый идентификатор формы
<?php
use WS\ReduceMigrations\Builder\EventsBuilder;
use WS\ReduceMigrations\Builder\Entity\EventType;
use WS\ReduceMigrations\Builder\Entity\EventMessage;
$builder = new EventsBuilder();
$builder->createEventType('NEW_ADD_ACTION', 'ru', function (EventType $event) {
$event
->name('Новая заявка')
->sort(10)
->description('#ACTION# - action');
// Добавление шаблона
$event
->addEventMessage('#EMAIL_FROM#', '#EMAIL_TO#', 's1')
->subject('Новая заявка')
->body('Поступила новая заявка #ACTION#!')
->bodyType(EventMessage::BODY_TYPE_HTML)
->active();
});
Метод createEventType()
создает и возвращает объект типа EventType
.
Аргументы метода:
type
- строковое значение типа событияlid
- строковый идентификатор языка сайтаcallback
- функция обратного вызова, принимает аргумент типаEventType
.
Описание методов класса EventType
:
name(string)
- устанавливает значение имя события. Принимает значение типаstring
sort(int)
- устанавливает значение сортировки. Принимает значение типаint
description(string)
- описание события. Принимает значение типаstring
addEventMessage(string)
- описание события. Принимает значение типаstring
. Возвращает объект типаEventMessage
Описание методов класса EventMessage
:
subject(string)
- устанавливает тему сообщения. Принимает значение типаstring
body(string)
- устанавливает текст сообщения. Принимает значение типаstring
bodyType(string)
- устанавливает тип текста сообщения. Принимает значение типаstring
(EventMessage::BODY_TYPE_HTML, EventMessage::BODY_TYPE_TEXT
)active(bolean)
- устанавливает активность шаблона. Принимает значение типаboolean
<?php
use WS\ReduceMigrations\Builder\EventsBuilder;
use WS\ReduceMigrations\Builder\Entity\EventType;
$builder = new EventsBuilder();
$builder->updateEventType('NEW_ADD_ACTION', 'ru', function (EventType $type) {
$type->name('Новая заявка');
foreach ($type->loadEventMessages() as $message) {
$message->bcc('#BCC#');
}
});
Метод updateEventType()
обновляет и возвращает объект типа EventType
.
Аргументы метода:
type
- строковое значение типа событияlid
- строковый идентификатор языка сайтаcallback
- функция обратного вызова, принимает аргумент типаEventType
.
Описание методов класса EventMessage
:
loadEventMessages()
- возвращает все шаблоны события
<?php
use Bitrix\Main\Type\DateTime;
use WS\ReduceMigrations\Builder\AgentBuilder;
use WS\ReduceMigrations\Builder\Entity\Agent;
$date = new DateTime();
$date->add('+1 day');
$builder = new AgentBuilder();
$obAgent = $builder->addAgent('abs(0);', function (Agent $agent) use ($date) {
$agent
->sort(23)
->active(true)
->nextExec($date);
});
Метод addAgent()
добавляет и возвращает объект типа Agent
.
Аргументы метода:
agetFunction
- строковое значение функции агента. Принимает значение типаstring
callback
- функция обратного вызова, принимает аргумент типаAgent
.
Описание метов класса Agent
:
sort(int)
- устанавливает значение сортировки. Принимает значение типаint
active(bolean)
- устанавливает активность агента. Принимает значение типаboolean
nextExec(date)
- устанавливает дату следующего запуска. Принимает значение типаdate
<?php
use WS\ReduceMigrations\Builder\AgentBuilder;
use WS\ReduceMigrations\Builder\Entity\Agent;
$builder = new AgentBuilder();
$builder->updateAgent('abs(0);', function (Agent $agent) {
$agent
->active(false)
->isPeriod(true);
});
Метод updateAgent()
обновляет и возвращает объект типа Agent
.
<?php
use WS\ReduceMigrations\Builder\HighLoadBlockBuilder;
use WS\ReduceMigrations\Builder\Entity\HighLoadBlock;
use WS\ReduceMigrations\Builder\Entity\UserField;
$builder = new HighLoadBlockBuilder();
$block = $builder->addHLBlock('account_social', 'account_social_highloadblock', function (HighLoadBlock $block) {
$prop = $block
->addField('uf_type')
->sort(10)
->label(['ru' => 'Тип'])
->type(UserField::TYPE_ENUMERATION);
$prop->addEnum('vk')->xmlId('vk');
$prop->addEnum('twitter')->xmlId('twitter');
$block
->addField('uf_active')
->label(['ru' => 'Активность'])
->type(UserField::TYPE_BOOLEAN);
$block
->addField('uf_date_create')
->label(['ru' => 'Дата создания'])
->type(UserField::TYPE_DATETIME);
$block
->addField('uf_reference')
->label(['ru' => 'Внешняя ссылка'])
->type(UserField::TYPE_STRING);
$block
->addField('uf_icon')
->label(['ru' => 'Иконка'])
->type(UserField::TYPE_IBLOCK_ELEMENT)
->required(true);
});
Метод addHLBlock()
добавляет и возвращает объект типа HighLoadBlock
.
Аргументы метода:
name
- строковое значение название инфоблока. Принимает значение типаstring
tableName
- строковое значение название таблицы инфоблока. Принимает значение типаstring
callback
- функция обратного вызова, принимает аргумент типаHighLoadBlock
.
Описание методов класса HighLoadBlock
:
addField(name)
- строковое название поля в таблице. Принимает значение типаstring
label(name)
- строковое название поля. Принимает значение типаstring
type(type)
- строковое значение типа. Принимает значение типаstring
. Возвращает объект типаUserField
.required(boolean)
- устанавливает обязательность поля. Принимает значение типаboolean
. Возвращает объект типаUserField
.multiple(boolean)
- устанавливает множественное значение для поля. Принимает значение типаboolean
. Возвращает объект типаUserField
.
<?php
use WS\ReduceMigrations\Builder\HighLoadBlockBuilder;
use WS\ReduceMigrations\Builder\Entity\HighLoadBlock;
$builder = new HighLoadBlockBuilder();
$builder = new HighLoadBlockBuilder();
$block = $builder->updateHLBlock('account_social_highloadblock', function (HighLoadBlock $block) {
$block->name('TestBlock2');
$prop = $block
->updateField('uf_reference')
->multiple(true)
->required(true);
$prop->updateEnum('Тест1')->xmlId('test1');
$prop->removeEnum('Тест2');
});
Метод updateHLBlock()
обновляет и возвращает объект типа HighLoadBlock
.