Новый механизм евентов

Изменил механизм регистрации и выполнения евентов в экшене.
Теперь можно регистрировать евент используя регулярные выражения, как для самого евента, так и для всех параметров, передаваемых в 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 комментариев

avatar
работает :)
avatar
новы_й_?
  • ade
  • 0
avatar
ачепятка
avatar
Подскажите как добавлять изменения к себе на установленный движок, которые происходят с движком?
  • Sasa
  • 0
avatar
avatar
Может кто нибудь помочь?
Есть урл.
site.ru/bla/abc/page7/
и
site.ru/bla/abc/b/page7/
В первом варианте чтобы получить страницу беру такое выражение
$this->AddEventPreg('/^abc$/i','/^(page(\d+))?$/i','EventShowAbc');
...
$iPage=$this->GetParamEventMatch(0,2) ? $this->GetParamEventMatch(0,2) : 1;

, а как получить буквенный указатель и номер страници для второго случая.
avatar
тьфу опечатался
$sChar=$this->GetParamEventMatch(0,0);
$iPage=$this->GetParamEventMatch(1,2) ? $this->GetParamEventMatch(1,2) : 1;
avatar
для второго варианта как-то так:
$this->AddEventPreg('/^abc$/i','/\w/i','/^(page(\d+))?$/i','EventShowAbc');
...
$sChar=$this->GetParamEventMatch(0,2);
$iPage=$this->GetParamEventMatch(1,2) ? $this->GetParamEventMatch(1,2) : 1;
avatar
Большое Вам спасибо!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.