luckcodes / yii2-events-manager
Organization of connection of events through the component: Event manager.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2025-06-20 13:45:28 UTC
README
Компонент для Yii 2 приложения
Организация подключения событий через компонент: Менеджер событий.
Обработчики событий подключаются только в момент вызова первого события и не нагружают систему.
Установка
Предпочтительный способ установки этого расширения через composer.
Либо запустить
php composer.phar require --prefer-dist luckcodes/yii2-events-manager "~3.0"
или добавить
"luckcodes/yii2-events-manager": "~3.0"
в требуемый раздел вашего composer.json
файл.
Подкючение в config файлах
'components' => [
'eventsManager' => [
'class'=>'luckcodes\eventsmanager\components\EventsManager',
]
]
Подключение события вручную
'components' => [
'eventsManager' => [
'class'=>'luckcodes\eventsmanager\components\EventsManager',
'events'=>[
'common\test\BlockTpl' =>[
'init_shortcode' =>[
['common\eventhandler\MainBlocksHandler', 'shortcode']
]
]
],
]
]
В примере мы подключили для события init_shortcode
класса common\test\BlockTpl
обработчик события ['common\eventhandler\MainBlocksHandler', 'shortcode']
.
Где common\eventhandler\MainBlocksHandler
- это путь к классу обработчика, а shortcode
- метод,
который будет вызван при наступлении события init_shortcode
.
Подключение через дополнительный обработчик
Чтобы не загромождать конфиг файлы большим количеством подключений событий, в менеджере имеется возможность подключения дополнительных обработчиков, которые внутри себя (используя необходимую логику) могут подключать только необходимые события.
Метод подключения собственных обработчиков подключения событий
'components' => [
'eventsManager' => [
'class'=>'luckcodes\eventsmanager\components\EventsManager',
'eventsConnectors'=>[
'luckcodes\items\handlers\events\ConnectEventsFrontend'
],
]
]
Класс luckcodes\items\handlers\events\ConnectEventsFrontend
должен быть дочерним класом luckcodes\eventsmanager\classes\AddHandlers
Пример дополнительного обработчика подключения событий
файл: luckcodes\items\handlers\events\ConnectEventsFrontend
<?php
namespace luckcodes\themeblocks\src\handlers;
use luckcodes\eventsmanager\classes\AddHandlers;
class EventsManagerHandler extends AddHandlers
{
public function connect()
{
$this->addEventHandler(
'common\components\MenuBuilder',
'menu_build',
'common\modules\item\eventhandler\MenuBuilderComponent',
'addOptionsMenu'
);
}
}
Данный класс подключит к событию menu_build
класса common\components\MenuBuilder
обработчик common\modules\item\eventhandler\MenuBuilderComponent
и будет вызван метод addOptionsMenu
.
Поведение
Для удобства в пакет включено поведение luckcodes\eventsmanager\behaviors\EventsManagerBehavior
.
Его необходимо подключить в компонент, который будет генерировать событие.
Берет указанные обработчики события из luckcodes\eventsmanager\components\EventsManager
Если есть обработчик для данного события, то подключает и создает обертку для триггера
Подключение в компоненте
public function behaviors()
{
return [
[
'class' => EventsManagerBehavior::class,
]
];
}
Вызов события через обертку триггера событий
$this->eventTrigger(Event name,**Event** Event data);