Для более гибкой работы с настройками в «Конструкторе» предусмотрена система событий. Типы всех событий определены в константах класса \Rover\Fadmin\Options\Event
. Их описание можно найти в api по \Rover\Fadmin\Options\Event.
Эти типы генерируются каждым модулем, использующим «Конструктор». Пример обработчика для модуля 'partner.module'
и события afterMakePresetTab
:
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('partner.module', 'afterMakePresetTab', array('\Partner\Module\Event', 'onAfterMakePresetTab'));
Сам обработчик имеет стандартный вид:
namespace Partner\Module;
class Event
{
public static function onAfterMakePresetTab(Bitrix\Main\Event $event)
{
$parameters = $event->getParameters();
$tab = $event->getParameter('tab');
...
$parameters['tab'] = $tab;
return new Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $parameters, 'partner.module');
}
}
Подробнее про события и их обработку в ядре d7 (офф. документация).
Если событие, начинающееся с
'before'
, вернет реузьтат типаBitrix\Main\EventResult::ERROR
, то действие, обычно совершаемое после этого события, выполнено не будет. Это не относится к'beforeGetTabInfo'
. Оно позволяет только изменить информацию о вкладке, но не отменить ее отображение. Для отмены отображения таба можно воспользоваться событиемbeforeShowTab
.
Ранее события можно было обрабатывать, определяя соответствующий метод классе, унаследованном от \Rover\Fadmin\Options
. На данный момент эта система событий считается устаревшей и больше не поддерживается.