• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/engine/controller.php
  • Класс: BitrixMainEngineController
  • Вызов: Controller::attachFilters
protected function attachFilters(Action $action): void
{
	$modifiedConfig = $this->buildFilters(
		$this->getActionConfig($action->getName())
	);

	$eventManager = EventManager::getInstance();
	foreach ($modifiedConfig['prefilters'] as $filter)
	{
		/** @var $filter ActionFilterBase */
		if (!in_array($this->getScope(), $filter->listAllowedScopes(), true))
		{
			continue;
		}

		$filter->bindAction($action);

		$this->eventHandlersIds['prefilters'][] = $eventManager->addEventHandler(
			'main',
			static::getFullEventName(static::EVENT_ON_BEFORE_ACTION),
			[$filter, 'onBeforeAction']
		);
	}

	foreach ($modifiedConfig['postfilters'] as $filter)
	{
		/** @var $filter ActionFilterBase */
		if (!in_array($this->getScope(), $filter->listAllowedScopes(), true))
		{
			continue;
		}

		/** @var $filter ActionFilterBase */
		$filter->bindAction($action);

		$this->eventHandlersIds['postfilters'][] = $eventManager->addEventHandler(
			'main',
			static::getFullEventName(static::EVENT_ON_AFTER_ACTION),
			[$filter, 'onAfterAction']
		);
	}
}