Files
ave-cms/help/hooks
2026-07-30 11:56:32 +03:00
..
2026-07-30 11:56:32 +03:00
2026-07-27 12:58:44 +03:00
2026-07-30 11:56:32 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00
2026-07-27 12:58:44 +03:00

Хуки и события

Хуки позволяют модулю вмешаться в жизненный цикл системы без изменения ядра: проверить или дополнить данные, запустить интеграцию, очистить собственный кеш или изменить результат рендера.

Для подписки используется App\Helpers\Hooks. Большинство системных событий передают изменяемый объект App\Common\LifecycleEvent; сохранение документа использует специализированный DocumentSaveEvent.

Карта раздела

Страница Назначение
Подписка и контекст Manifest, приоритеты, LifecycleEvent, action/filter и собственные события.
Сохранение документов Изменение данных и полей, отклонение сохранения, события публикации.
События полей Нормализация, валидация, запись и публичный рендер.
Каталог событий Полный список стабильных точек расширения ядра.
Отладка и надёжность Public Debug, ошибки, производительность и внешние сервисы.

Базовое правило

Подписку модуля объявляйте в его module.php, а обработчик размещайте в классе:

'hooks' => array(
    array(
        'name' => 'content.document.saved',
        'handler' => array(Subscriber::class, 'onDocumentSaved'),
        'priority' => 20,
    ),
),

Обработчик не подключается вручную: классы загружает namespace-loader, подписку регистрирует ModuleManager. Хуки из секции public работают только на сайте, из admin — только в панели управления, верхнеуровневые — в обоих runtime.

Не используйте хук как скрытый вызов контроллера. Контекст должен быть небольшим, предсказуемым и документированным, а долгую работу нужно выносить из критического HTTP-запроса.