События Highload-блоков
OnBeforeAddсобытие вызывается до добавление элемента highload (HL) блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройденаOnAddсобытие вызывается перед добавлением в бд, после валидации полей. Модификация данных не доступнаOnAfterAddсобытие вызывается после добавления элемента HL блока. Можно добавить дополнительную логику, которая будет запускаться после добавления нового элемента данного HL-блокаOnBeforeUpdateсобытие вызывается до обновления элемента highload (HL) блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройденаOnUpdateсобытие вызывается перед обновлением в бд, после валидации полей. Модификация данных не доступнаOnAfterUpdateсобытие вызывается после обновления элемента HL блока. Можно добавить дополнительную логику, которая будет запускаться после обновления элемента данного HL-блокаOnBeforeDeleteсобытие вызывается до удаления элемента highload (HL) блока. Можно отменить удалениеOnDeleteсобытие вызывается перед удалением из бд. Отмена удаления не доступнаOnAfterDeleteсобытие вызывается после удаления элемента HL блока. Можно добавить дополнительную логику, которая будет запускаться после удаления элемента данного HL-блока
Перехват события highload блока
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
// WebinarOptions название highload блока
$eventManager->addEventHandler('', 'WebinarOptionsOnAfterAdd', 'OnAfterAdd');
// функция обработчик
function OnAfterAdd(\Bitrix\Main\Entity\Event $event) {}
Событие Highload блока OnBeforeAdd
Событие вызывается до добавление элемента highload блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройдена.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'WebinarOptionsBeforeAdd', 'OnBeforeAdd');
function OnBeforeAdd(\Bitrix\Main\Entity\Event $event) {
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет WebinarOptionsBeforeAdd
$eventType = $event->getEventType();
// получаем массив полей хайлоад блока
$arFields = $event->getParameter("fields");
//получить все доступные в этом событие данные
$arParameters = $event->getParameters();
$result = new \Bitrix\Main\Entity\EventResult();
//модификация данных
if (empty($arFields['UF_FULL_DESCRIPTION'])) {
$arFields['UF_FULL_DESCRIPTION'] = $arFields['UF_DESCRIPTION'];
$result->modifyFields($arFields);
}
// для тестирования модификации данных закомментируйте этот блок
if (empty($arFields['UF_DESCRIPTION'])) {
$arErrors = Array();
$arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_DESCRIPTION"), "Ошибка в поле UF_DESCRIPTION. Поле не должно быть пустым!");
$result->setErrors($arErrors);
}
return $result;
}
Событие Highload блока OnAdd
Событие вызывается перед добавлением в бд, после валидации полей. Модификация данных не доступна.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAdd', 'OnAdd');
function OnAdd(\Bitrix\Main\Entity\Event $event) {
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnAdd
$eventType = $event->getEventType();
// получаем массив полей хайлоад блока
$arFields = $event->getParameter("fields");
}
Событие Highload блока OnAfterAdd
Событие вызывается после добавления элемента highload блока. Можно добавить дополнительную логику, которая будет запускаться после добавления нового элемента данного highload блока.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAfterAdd', 'OnAfterAdd');
function OnAfterAdd(\Bitrix\Main\Entity\Event $event) {
//id добавляемого элемента
$id = $event->getParameter("id");
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnAfterAdd
$eventType = $event->getEventType();
// получаем массив полей хайлоад блока
$arFields = $event->getParameter("fields");
}
Событие Highload блока OnBeforeUpdate
Событие вызывается до обновления элемента highload блока и валидации полей. Можно модифицировать данные, добавить собственную валидацию, вернуть ошибку, если валидация не пройдена.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnBeforeUpdate', 'OnBeforeUpdate');
function OnBeforeUpdate(\Bitrix\Main\Entity\Event $event) {
$id = $event->getParameter("id");
//id обновляемого элемента
$id = $id["ID"];
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnBeforeUpdate
$eventType = $event->getEventType();
// получаем массив полей хайлоад блока
$arFields = $event->getParameter("fields");
$result = new \Bitrix\Main\Entity\EventResult();
//модификация данных
if (empty($arFields['UF_FULL_DESCRIPTION'])) {
$arFields['UF_FULL_DESCRIPTION'] = $arFields['UF_DESCRIPTION'];
$result->modifyFields($arFields);
}
// для тестирования модификации данных закомментируйте этот блок
if (empty($arFields['UF_DESCRIPTION'])) {
$arErrors = Array();
$arErrors[] = new \Bitrix\Main\Entity\FieldError($entity->getField("UF_DESCRIPTION"), "Ошибка в поле UF_DESCRIPTION. Поле не должно быть пустым!");
$result->setErrors($arErrors);
}
return $result;
}
Событие Highload блока OnUpdate
Событие вызывается перед обновлением в бд, после валидации полей. Модификация данных не доступна.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnUpdate', 'OnUpdate');
function OnUpdate(\Bitrix\Main\Entity\Event $event) {
$id = $event->getParameter("id");
//id обновляемого элемента
$id = $id["ID"];
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnUpdate
$eventType = $event->getEventType();
// получаем массив полей хайлоад блока
$arFields = $event->getParameter("fields");
}
Событие Highload блока OnAfterUpdate
Событие вызывается после обновления элемента highload блока. Можно добавить дополнительную логику, которая будет запускаться после обновления элемента данного highload блока.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAfterUpdate', 'OnAfterUpdate');
function OnAfterUpdate(\Bitrix\Main\Entity\Event $event) {
$id = $event->getParameter("id");
//id обновляемого элемента
$id = $id["ID"];
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnAfterUpdate
$eventType = $event->getEventType();
// получаем массив полей хайлоад блока
$arFields = $event->getParameter("fields");
}
Событие Highload блока OnBeforeDelete
Событие вызывается до удаления элемента highload блока. Можно отменить удаление.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnBeforeDelete', 'OnBeforeDelete');
function OnBeforeDelete(\Bitrix\Main\Entity\Event $event) {
// поля в этом событии недоступны, только id
$id = $event->getParameter("id");
//id удаляемого элемента
$id = $id["ID"];
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnBeforeDelete
$eventType = $event->getEventType();
$result = new \Bitrix\Main\Entity\EventResult();
if ($id <= 20) {
$arErrors = Array();
$arErrors[] = new \Bitrix\Main\Entity\EntityError("Ошибка! Нельзя удалять первые 20 элементов!");
$result->setErrors($arErrors);
}
return $result;
}
Событие Highload блока OnDelete
Событие вызывается перед удалением из бд. Отмена удаления не доступна.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnDelete', 'OnDelete');
function OnDelete(\Bitrix\Main\Entity\Event $event) {
// поля в этом событии недоступны, только id
$id = $event->getParameter("id");
//id удаляемого элемента
$id = $id["ID"];
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnDelete
$eventType = $event->getEventType();
}
Событие Highload блока OnAfterDelete
Событие вызывается после удаления элемента highload блока. Можно добавить дополнительную логику, которая будет запускаться после удаления элемента данного highload блока.
init.php$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('', 'ColorsOnAfterDelete', 'OnAfterDelete');
function OnAfterDelete(\Bitrix\Main\Entity\Event $event) {
$id = $event->getParameter("id");
//id удаляемого элемента
$id = $id["ID"];
$entity = $event->getEntity();
$entityDataClass = $entity->GetDataClass();
// тип события. вернет ColorsOnAfterAdd
$eventType = $event->getEventType();
if ($id > 30 && $id < 1000) {
// ваша логика....
}
}