Как на php/nodejs сделать роутер c вложенными url?

187
14 марта 2017, 16:31

Как правильно сделать роутер что бы url был вложенным, и количество вложенности нам не известно. Можно вот так (nodejs)

Route.get('/:category', 'FrontController')
Route.get('/:category:subcategory', 'FrontController')
Route.get('/:category:subcategory:page', 'FrontController')

Но так мы ограничим нашу вложенность до 3-х ресурсов.

Подскажите как вы это делаете. Не важно на каком языке, главное принцип работы.

UPD. Возможно немного не так объяснил, но получить любою страницу можно так

Route.get('*', 'FrontController')

то есть через звездочку, так будет обрабатываться любой запрос. Да в принципе и такой роутер примет любой запрос

Route.get('/:category', 'FrontController')

Вопрос в том как проверить к примеру такой адрес /parent/parent/page/ существуют ли эти страницы и является ли parent родителем page. Короче говоря нужен принцип работы как в cms

Вот так можно получить массив имен страниц из адреса

request.url().split( '/' ) // [ 'qwe', 'asd', 'zxc' ]

И sql запросом получить страницы по условию

`WHERE alias IN ([ 'qwe', 'asd', 'zxc' ])`

ответ из базы

[ { id: 1, alias: 'qwe', parent: 0 },
  { id: 2, alias: 'asd', parent: 1 },
  { id: 3, alias: 'zxc', parent: 2 } ]

Вот теперь у меня мозг пришел в тупик, во первых правильно ли я вообще начал решать проблему, во вторых никак не пойму как это все правильно перебрать (

READ ALSO
Как дебажить php проект?

Как дебажить php проект?

Вопрос следующий - есть проект на PHP, стоит xdebug, есть форма

271
Не работает mod_rewrite

Не работает mod_rewrite

Недавно решил перейти с denwer на wampИмеется

194
Мультиязычность на Codeignither

Мультиязычность на Codeignither

Как правильно сделать мультиязычность на Codeignither

234
Как вывести список баз данных Mysql в PHP 7.0?

Как вывести список баз данных Mysql в PHP 7.0?

Суть вопроса такова: Мне необходимо вывести список баз данных на сервере, и представить их в виде гипперссылок, чтобы при клике на ссылку,...

246