Новый механизм евентов
6
Изменил механизм регистрации и выполнения евентов в экшене.
Теперь можно регистрировать евент используя регулярные выражения, как для самого евента, так и для всех параметров, передаваемых в 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, просьба кто может протестить новый механизм :)
- +19
- 05 октября 2008, 20:48
- ort
Может кто нибудь помочь?
Есть урл.
site.ru/bla/abc/page7/
и
site.ru/bla/abc/b/page7/
В первом варианте чтобы получить страницу беру такое выражение
, а как получить буквенный указатель и номер страници для второго случая.
Есть урл.
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;, а как получить буквенный указатель и номер страници для второго случая.
Комментарии (9)
RSS свернуть / развернуть