Новый механизм евентов
Изменил механизм регистрации и выполнения евентов в экшене.
Теперь можно регистрировать евент используя регулярные выражения, как для самого евента, так и для всех параметров, передаваемых в URL. Это позволяет избавиться от переопределения метода EventNotFound() при динамических евентах.
Так же осталась возможность использовать старый вариант с методом AddEvent(), он просто является оберткой для AddEventPreg().
Изменения здесь — http://trac.lsdev.ru/livestreet/changeset/35, просьба кто может протестить новый механизм :)
Теперь можно регистрировать евент используя регулярные выражения, как для самого евента, так и для всех параметров, передаваемых в URL. Это позволяет избавиться от переопределения метода EventNotFound() при динамических евентах.
$this->AddEvent('edit','EventEditBlog');
$this->AddEventPreg('/^(\d+)\.html$/i','EventShowTopicPersonal');
$this->AddEventPreg('/^\w+$/i','/^(\d+)\.html$/i','EventShowTopic');
$this->AddEventPreg('/^\w+$/i','/^bad$/i','/^$/i','EventShowBlogBad');
$this->AddEventPreg('/^\w+$/i','/^bad$/i','/^page(\d+)$/i','EventShowBlogBad');
Так же осталась возможность использовать старый вариант с методом AddEvent(), он просто является оберткой для AddEventPreg().
Изменения здесь — http://trac.lsdev.ru/livestreet/changeset/35, просьба кто может протестить новый механизм :)
9 комментариев
Есть урл.
site.ru/bla/abc/page7/
и
site.ru/bla/abc/b/page7/
В первом варианте чтобы получить страницу беру такое выражение
, а как получить буквенный указатель и номер страници для второго случая.