You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1.3 KiB

Events

TBD, see also Component.md.

There is no longer the need to define an on-method in order to define an event in Yii 2.0. Instead, you can use whatever event names. To attach a handler to an event, you should use the on method now:

$component->on($eventName, $handler);
// To detach the handler, use:
// $component->off($eventName, $handler);

When you attach a handler, you can now associate it with some parameters which can be later accessed via the event parameter by the handler:

$component->on($eventName, $handler, $params);

Because of this change, you can now use "global" events. Simply trigger and attach handlers to an event of the application instance:

Yii::$app->on($eventName, $handler);
....
// this will trigger the event and cause $handler to be invoked.
Yii::$app->trigger($eventName);

If you need to handle all instances of a class instead of the object you can attach a handler like the following:

Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_INSERT, function ($event) {
	Yii::trace(get_class($event->sender) . ' is inserted.');
});

The code above defines a handler that will be triggered for every Active Record object's EVENT_AFTER_INSERT event.