Events D7 - uniqcle/Bitrix GitHub Wiki
onBeforeAdd/onAdd/onAfterAdd
onBeforeUpdate/onUpdate/onAfterUpdate
onBeforeDelete/onDelete/onAfterDelete
события
Унифицированные события
onBefore<Action>
можно изменить данные
можно сгенерировать ошибку
<вызов валидаторов>
прерывание операции в случае ошибок
on<Action>
можно сгенерировать ошибку
выполнение SQL запроса
onAfter<Action>
События при добавлении
onBeforeAdd(параметры: fields)
можно изменить данные
можно сгенерировать ошибку
<вызов валидаторов>
onAdd(параметры: fields)
можно сгенерировать ошибку
выполнение SQL запроса
onAfterAdd(параметры: fields, primary)
События при обновлении
onBeforeUpdate(параметры: primary, fields)
можно изменить данные
можно сгенерировать ошибку
onUpdate(параметры primary, fields)
можно сгенерировать ошибку
выполнение SQL запроса
onAfterUpdate(параметры primary, fields)
События при удалении
onBeforeDelete(параметры primary)
можно изменить данные
можно сгенерировать ошибку
<вызов валидаторов>
прерывание операции в случае ошибок
onDelete(параметры primary)
можно сгенерировать ошибку
выполнение SQL запроса
onAfterDelete(параметры primary)
onBeforeAdd
//in code
\Bitrix\Main\GroupTable::add(array(
'NAME' => 'Имя группы',
'DESCRIPTION' => 'Группа добавлена с помощью API ORM D7'
));
// init.php
use Bitrix\Main\EventManager;
$handler = EventManager::getInstance();
$handler->addEventHandler(
'main', // id модуля
'\Bitrix\Main\Group::onBeforeAdd', // класс с простран. имен без Table и вызов события как статич. метода
'onBeforeAddHandler' // имя метода-обработчика
);
function onBeforeAddHandler(\Bitrix\Main\Entity\Event $event){
$fields = $event->getParameters("fields");
debug($fields);
}
onAfterDelete
// в коде
\Bitrix\Main\GroupTable::delete([
"ID" => 16
]);
// init.php
$handler->addEventHandler(
'main',
'\Bitrix\Main\Group::onAfterDelete',
'onAfterDeleteHandler'
);
function onAfterDeleteHandler(\Bitrix\Main\Entity\Event $event){
$primary = $event->getParameters("primary"); //primary ключ удаляемого объекта. Только он передается в события D7
debug($primary);
}
со своим классом в
init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'uniqcle.d7',
'\Uniqcle\D7\Book::onBeforeAdd',
array('MyClass', 'myOrmEvent') );
class MyClass // класс обработчика события
{
static public function myOrmEvent(\Bitrix\Main\Entity\Event $event){
$fields = $event->getParameter("fields");
//далее работа с $fields
}
}
//local/modules/academy.event/install/index.php
...
function InstallEvents()
{
// Регистрация обработчика на событие добавления книги
\Bitrix\Main\EventManager::getInstance()->registerEventHandler(
'uniqcle.d7', // id модуля, к кот. относится событие
'\Uniqcle\D7\Book::OnBeforeAdd', // id события, обработчик кот. мы будем регистрировать
$this->MODULE_ID, // id модуля, к которому относится регистрируемый обработчик
'\Academy\Event\Event', // класс где лежит обработчик
'eventHandler' // обработчик события
);
}
function UnInstallEvents()
{
// Снятия обработчика события
\Bitrix\Main\EventManager::getInstance()->unRegisterEventHandler(
'uniqcle.d7',
'\Uniqcle\D7\Book::OnBeforeAdd',
$this->MODULE_ID,
'\Academy\Event\Event',
'eventHandler');
}
...
//local/modules/academy.event/lib/event.php
namespace Academy\Event;
class event
{
static public function eventHandler(\Bitrix\Main\Entity\Event $event)
{
$fields = $event->getParameter("fields");
echo'<pre>';
echo'Обработчик события из модуля academy.event
';
var_dump($fields);
echo'</pre>';
}
}
//local/modules/uniqcle.d7/lib/book.php
...
public static function onBeforeUpdate(Entity\Event $event)
{
$result = new Entity\EventResult;
$data = $event->getParameter("fields");
if (isset($data['ISBN'])) {
$result->addError(new Entity\FieldError(
$event->getEntity()->getField('ISBN'),
'Запрещено менять ISBN код у существующих книг'
));
}
return $result;
}
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=4803&LESSON_PATH=3913.3516.5748.4803
https://github.com/SidiGi/bitrix-info/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D1%81-ORM