Руководство по EventManager в 1С-Битрикс: управление событиями и обработчиками

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

EventManager в 1С-Битрикс: управление событиями и обработчиками

Оглавление

Описание

EventManager управляет событиями и их обработчиками в приложении. Он позволяет регистрировать обработчики для определенных событий, удалять их и вызывать события, чтобы все зарегистрированные обработчики были уведомлены.

Методы

getInstance

@staticmethod
def getInstance():
    # Возвращает единственный экземпляр EventManager

Описание: Метод getInstance возвращает единственный экземпляр класса EventManager. Если экземпляр еще не создан, он будет создан при первом вызове этого метода.

Возвращаемое значение:

  • EventManager: Единственный экземпляр класса EventManager.

registerHandler

def registerHandler(self, event_name, handler):
    # Регистрирует обработчик для указанного события

Описание: Метод registerHandler регистрирует обработчик для указанного события. Обработчик будет вызван каждый раз, когда событие будет вызвано.

Параметры:

  • event_name (str): Имя события, для которого регистрируется обработчик.
  • handler (callable): Функция или метод, который будет вызван при возникновении события.

unregisterHandler

def unregisterHandler(self, event_name, handler):
    # Удаляет обработчик для указанного события

Описание: Метод unregisterHandler удаляет обработчик для указанного события. Обработчик больше не будет вызван при возникновении этого события.

Параметры:

  • event_name (str): Имя события, для которого удаляется обработчик.
  • handler (callable): Функция или метод, который будет удален.

triggerEvent

def triggerEvent(self, event_name, *args, **kwargs):
    # Вызывает все зарегистрированные обработчики для указанного события

Описание: Метод triggerEvent вызывает все зарегистрированные обработчики для указанного события. Все аргументы, переданные в этот метод, будут переданы обработчикам.

Параметры:

  • event_name (str): Имя события, которое нужно вызвать.
  • *args: Позиционные аргументы, которые будут переданы обработчикам.
  • **kwargs: Именованные аргументы, которые будут переданы обработчикам.

Примеры использования

Регистрация и удаление обработчиков

def on_event_triggered(arg1, arg2):
    print(f"Event triggered with args: {arg1}, {arg2}")

# Получаем экземпляр EventManager
event_manager = EventManager.getInstance()

# Регистрируем обработчик
event_manager.registerHandler("my_event", on_event_triggered)

# Удаляем обработчик
event_manager.unregisterHandler("my_event", on_event_triggered)

Вызов события

def on_event_triggered(arg1, arg2):
    print(f"Event triggered with args: {arg1}, {arg2}")

# Получаем экземпляр EventManager
event_manager = EventManager.getInstance()

# Регистрируем обработчик
event_manager.registerHandler("my_event", on_event_triggered)

# Вызываем событие
event_manager.triggerEvent("my_event", "arg1_value", "arg2_value")

В этом примере при вызове события my_event будет вызван обработчик on_event_triggered с аргументами arg1_value и arg2_value.

Теги:  D7, справочник


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Перенос сайтов на «1С-Битрикс»

сайты на платформе «1С-Битрикс» — это удобство, надежность и высокая посещаемость

от 12 000 рублей
Перенос сайтов с любых CMS и статичных страниц на платформу «1С-Битрикс», с учетом дизайна, верстки и урл-адресов. С сохранением всей информации и структуры сайта.

* зависит от объема выполняемых работ.

Участие в проекте

привлечение в проект на part-time основе

от 20 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная