Обработка и вызов событий (не ORM)

Октябрь 27, 2017

Теги: События

Примеры обработки и вызова простых событий в ядре d7.

Пример обработки события:


namespace Grain\ForumAccess;


\
Bitrix\Main\EventManager::getInstance()->addEventHandler
    
'grain.forum'
    
'OnGlobalsGetForumFilter'
    
'\Grain\ForumAccess\OnGlobalsGetForumFilter'
); 

function 
OnGlobalsGetForumFilter(\Bitrix\Main\Event $event
{
    
$arFilter $event->getParameter(0);
    
    
$arFilter["SITE_ID"] = array("s1","s2"); // модифицируем массив фильтра, делаем чтобы отображались форумы с двух сайтов: s1 и s2

    
$type $event->getEventType(); //  статус на входе (например, после другого обработчика)

    /*
    также $type мог бы принять значения
    \Bitrix\Main\EventResult::SUCCESS - при успешной обработке
    \Bitrix\Main\EventResult::ERROR - если нужно вернуть ошибку
    */

    
$result = new \Bitrix\Main\EventResult($type$arFilter);
    return 
$result;
}

Пример вызова события:


$event = new \Bitrix\Main\Event("grain.forum""OnGlobalsGetFilter", array($arFilter));

$event->send();
foreach (
$event->getResults() as $eventResult)
{
    if(
$eventResult->getType() == \Bitrix\Main\EventResult::ERROR// если обработчик вернул ошибку, ничего не делаем 
        
continue;
    
$arFilter array_merge($arFilter$eventResult->getParameters());
}

← Переход к списку