Документация для разработчиков
Темная тема

EventManager

EventManager - класс кратко- и долгосрочной регистрации обработчиков событий. Класс реализует паттерн Singleton (Одиночка), обращаться к нему нужно через getInstance().

В обработчики, зарегистрированные с помощью \Bitrix\Main\EventManager::AddEventHandler, в качестве аргумента будет передан объект события (Bitrix\Main\Event). Если хотите, чтобы передавались старые аргументы, нужно использовать \Bitrix\Main\EventManager::addEventHandlerCompatible. Аналогично с \Bitrix\Main\EventManager::registerEventHandler и \Bitrix\Main\EventManager::registerEventHandlerCompatible.

Аналогами класса в старом ядре являются функции:
RegisterModuleDependences,
UnRegisterModuleDependences,
AddEventHandler,
RemoveEventHandler,
GetModuleEvents.

Примеры

//версия 1 
$eventManager = \Bitrix\Main\EventManager::getInstance(); 
$eventManager->registerEventHandlerCompatible("module","event","module2","class","function");
//версия 2 для событий в DataManager например
$eventManager = \Bitrix\Main\EventManager::getInstance(); 
$eventManager->registerEventHandler("module","event","module2","class","function");

Свои обработчики в своих модулях

$arMacros["PRODUCTS"]  = "";  
$basketId = "10";
$event = new \Bitrix\Main\Event("mymodule", "OnMacrosProductCreate",array($basketId));
	$event->send();
	if ($event->getResults()){
		foreach($event->getResults() as $evenResult){
			if($evenResult->getResultType() == \Bitrix\Main\EventResult::SUCCESS){
			$arMacros["PRODUCTS"] = $evenResult->getParameters();
			}
		}
}
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("mymodule", "OnMacrosProductCreate", "OnMacrosProductCreate");

function OnMacrosProductCreate(\Bitrix\Main\Event $event){
	$arParam = $event->getParameters();
	$basketId = $arParam[0];
	$result = new \Bitrix\Main\EventResult(1,$basketId);
	return $result;
}
use Bitrix\Main\EventManager;

$handler = EventManager::getInstance()->addEventHandler(
	"main",
	"OnUserLoginExternal",
	array(
		"Intervolga\\Test\\EventHandlers\\Main",
		"onUserLoginExternal"
	)
);
EventManager::getInstance()->removeEventHandler(
	"main",
	"OnUserLoginExternal",
	$handler
);
EventManager::getInstance()->registerEventHandler(
	"main",
	"OnProlog",
	$this->MODULE_ID,
	"Intervolga\\Test\\EventHandlers",
	"onProlog"
);
EventManager::getInstance()->unRegisterEventHandler(
	"main",
	"OnProlog",
	$this->MODULE_ID,
	"Intervolga\\Test\\EventHandlers",
	"onProlog"
);
$handlers = EventManager::getInstance()->findEventHandlers("main", "OnProlog"); 


© «Битрикс», 2001-2024, «1С-Битрикс», 2024