Skip to content
AntonShevchuk edited this page Sep 6, 2012 · 9 revisions

Описание

Менеджер событий - ничего военного.

Настройки

нет

Использование

<?php
$app->getEventManager()
    ->attach('testevent', function(Event $event){
    return $event->getTarget()*2;
})
    ->attach('testevent', function(Event $event){
    return $event->getTarget()*2;
});
 
$app->getEventManager()->attach('testspace:event', function(Event $event){
    return $event->getTarget()+4;
});
$app->getEventManager()->attach('testspace:event', function(Event $event){
    return $event->getTarget()+2;
});
 
$app->getEventManager()->attach('testspace:event2', function(Event $event){
    $event->setTarget($event->getTarget()+5);
    return false; // stop propogation
});
$app->getEventManager()->attach('testspace:event2', function(Event $event){
    echo "Never run";
});
$app->getEventManager()->attach('testspace', function(Event $event){
    return $event->getTarget()+1;
});
 
$res1 = $app->getEventManager()->trigger('testevent', 1, array(1,2,3));        // 1*2*2 = 4
$res2 = $app->getEventManager()->trigger('testspace:event', 1, array(1,2,3));  // 1+1+4+2 = 8
$res3 = $app->getEventManager()->trigger('testspace:event2', 1, array(1,2,3)); // 1+1+5 = 7

Системные события

  • log - используем для профайлера
  • dispatch
  • widget
  • view:header
  • view:content
  • view:footer

Примеры

Редирект на страницу логина

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

<?php

$this->getEventManager()->attach('dispatch:auth', function($event) {
    if (!$this->getAuth()->getIdentity()) {
       $this->redirectTo('users', 'login');
    }
});
Clone this wiki locally