iSlayter
Новичок
Что такое грамотный Router?
Речь пойдёт о заранее пред.определённых (с помощью рег.выражений) URL'ах, к-е будут уходить на нужный контроллер/метод с нужными параметрами.
Т.е. на сию минутный момент у меня URL выглядит примерно так: http://site.on/e-shop/sections/view/id/2/orderby/lastupdate/sort/desc/ (где e-shop базовая часть пути) - это как-то слишком тяжко.
Необходимо сделать эквивалентный этому URL'у следующий: http://site.on/e-shop/section/2/lastupdate/desc/
Посмотрел ZF. Там делается так (например)
Конфигурационный ini файл:
Т.е., если реализовывать похожую схему, то нам следует найти уникальные значения:
routes\.(.*)\.(.*)
Потом, разбить информацию по массивам. Обязательно должны присутствовать routes\.(.*)\.route, routes\.(.*)\.defaults\.controller, routes\.(.*)\.defaults\.action
После чего, для уменьшения нагрузки, так сказать, сгенерировать php файлик, в к-м генерировать public static array() класса роутера c которым в дальнейшем работать из front controller'а проверяя соответствие request_string заданному рег.выражению?
Так же необходимо предусмотреть инструмент генерации ссылок (если существует соотв-й роутер). Такому хэлперу необходимо будет скармливать имя роутера и набор заданных параметров.
// ну не все же правила перезаписи в голове держать
Ход мысли верный?
Речь пойдёт о заранее пред.определённых (с помощью рег.выражений) URL'ах, к-е будут уходить на нужный контроллер/метод с нужными параметрами.
Т.е. на сию минутный момент у меня URL выглядит примерно так: http://site.on/e-shop/sections/view/id/2/orderby/lastupdate/sort/desc/ (где e-shop базовая часть пути) - это как-то слишком тяжко.
Необходимо сделать эквивалентный этому URL'у следующий: http://site.on/e-shop/section/2/lastupdate/desc/
Посмотрел ZF. Там делается так (например)
Конфигурационный ini файл:
archive - имя правила перезаписи.[production]
routes.archive.route = "archive/:year/*"
routes.archive.defaults.controller = archive
routes.archive.defaults.action = show
routes.archive.defaults.year = 2000
routes.archive.reqs.year = "\d+"
Т.е., если реализовывать похожую схему, то нам следует найти уникальные значения:
routes\.(.*)\.(.*)
Потом, разбить информацию по массивам. Обязательно должны присутствовать routes\.(.*)\.route, routes\.(.*)\.defaults\.controller, routes\.(.*)\.defaults\.action
После чего, для уменьшения нагрузки, так сказать, сгенерировать php файлик, в к-м генерировать public static array() класса роутера c которым в дальнейшем работать из front controller'а проверяя соответствие request_string заданному рег.выражению?
Так же необходимо предусмотреть инструмент генерации ссылок (если существует соотв-й роутер). Такому хэлперу необходимо будет скармливать имя роутера и набор заданных параметров.
// ну не все же правила перезаписи в голове держать
Ход мысли верный?
(идея из РОРа, т.е. де-факто хорошая