События 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) {
// ваша логика....
}
}