Как обычно реализуют многоуровневую виртуальную структуру URL?

vovanium

Новичок
у тебя это как-то решается или ты на это просто забил?
Поначалу забивал, т.е. модуль только брал то что ему нужно из request, а остальное просто игнорил. Но пришлось переделать, чтобы если есть неожидаемые параметры, то выдавать ошибку.
У меня просто юзался тег BASE и все пути относительно него строились. А некоторые тупые боты тег BASE не понимали, из-за чего входили в ступор склеивая url'ы типа company/news/company/about/company/news/ и т.п.
 

Духовность™

Продвинутый новичок
Но пришлось переделать, чтобы если есть неожидаемые параметры, то выдавать ошибку.
а каким образом? предполагаю, что программа разбора URL адреса должна знать, какая глубина должна быть у URL адреса и если глубина превышает, то выдавать ошибку..
 

vovanium

Новичок
triumvirat
предполагаю, что программа разбора URL адреса должна знать,
Как по мне - не должна, её задача найти модуль и передать управление модулю, а вот уже конкретный модуль должен знать какие параметры он должен получить, а какие нет.
И не нужно это всё пихать в парсер url, он работает по принципу "никого не знаю", т.е. он не может знать у какого модуля сколько может быть параметров (тем более что количество параметров может зависеть от самих параметров, например, если первый параметр = 1, то параметров ожидается 3, а если первый параметр = 2 - то 5 параметров).

Поэтому у меня первым делом при вызове модуля разбираются параметры, если пришло всё что ожидали и ничего лишнего, то уже дальше подключаем шаблоны, достаем данные из базы и прочая тяжеловесная работа.
 

Духовность™

Продвинутый новичок
vovanium
хорошо. только вот я одно не понял - а почему бы не ходить именно по дереву, а не по массиву, что ты привел? Я сейчас ходил по массиву наткнулся на следующее. Есть два URL:

/admin/user/edit/ - он записан в дереве структуры

и

/catalog/items/edit/ - он "ошибочный"

так вот, /catalog/items/edit/ открыл мне страницу /admin/user/edit/

Сейчас я переделал все на "гуляние" по дереву и такой проблемы нет.
 

vovanium

Новичок
Сейчас я переделал все на гуляние по дереву и такой проблемы нет
Что-то ты не так сделал :)
Подозреваю что у тебя где-то косяк с pid'ами, так как такое в принципе не возможно, у edit'ов разные родители

Что касается гуляния по дереву, что именно ты имеешь ввиду? Многомерный массив в виде дерева? Зачастую неудобно работать с массивами очень большой вложенности.
 

Духовность™

Продвинутый новичок
Что-то ты не так сделал
Подозреваю что у тебя где-то косяк с pid'ами, так как такое в принципе не возможно, у edit'ов разные родители
да, накосячил


Что касается гуляния по дереву, что именно ты имеешь ввиду?
забей) можно и так и так, без разницы
 
Сверху