В любом большом веб-приложении есть потребность в иерархии...
Пример - интернет магазин - две основные МОДЕЛИ (Model) - Category и Product:
Бытовая техника (Category)
|---------- Холодильники (Category)
__________|__________ Samsung2019 (Product)
|__________ Телевизоры (Category)
____________|__________ Sony2019 (Product)
Как вывести в броузер (придумать единственный URL) переменные ВИДА (View) о Sony2019.
... существует миллион и один способ это сделать - все зависит от фантазии веб-программиста и желания заказчика.
Например так:
market.com/sony2019
market.com/sony2019/
market.com/sony2019.html
market.com/p201569-sony2019.html
Эти варианты - попроще, легко реализуются и веб-программист будет настаивать на таком положении вещей...
Однако заказчик желает иметь УРЛы SEO-правильные, как ему нашептал Лебедев...
... и веб-программист получает головняк:
market.com/Бытовая техника/Телевизоры/sony2019
market.com/Бытовая техника/Телевизоры/sony2019.html
Как это работает...
Все УРЛы съедаются КОНТРОЛЛЕРОМ (Controller) в простейшем случае...
Однако в фреймворках перед КОНТРОЛЛЕРОМ может быть РОУТЕР - куда УРЛы попадают еще раньше...
URL -> ROUTER -> CONTROLLER -> MODEL -> VIEW
Вот в этой цепочке "перетравливается" УРЛ... Как из SEO-URL иерархической цепочки получить искомые ВИДИ - существует миллион и один способ...
Например так...
Задаете для ROUTER
- если URL заканчивается на слеш "/" - то перенаправляй на контроллер CategoryController - ибо получили КАТЕГОРИЮ... Например "market.com/Бытовая техника/Телевизоры/"
- если URL НЕ заканчивается на слеш "/" - то перенаправляй на контроллер ProductController - ибо получили ПРОДУКТ... Например "market.com/Бытовая техника/Телевизоры/sony2019"
Дальше в CategoryController берем часть URL, например "Бытовая техника/Телевизоры" и придумываем алгоритм - извлечь МОДЕЛЬ "Телевизоры", которая является ребенком для МОДЕЛИ "Бытовая техника"... Извлекаем МОДЕЛЬ из БД - передаем ее переменные в ВИД или помощники вида...
Аналогично для МОДЕЛИ "sony2019" Берем часть URL, например "Бытовая техника/Телевизоры/sony2019" и придумываем алгоритм - извлечь МОДЕЛЬ "sony2019", которая является ребенком МОДЕЛИ "Телевизоры", которая является ребенком для МОДЕЛИ "Бытовая техника"... Извлекаем МОДЕЛЬ из БД - передаем ее переменные в ВИД или помощники вида...