Роутинг (фреймворк и дерево страниц)

StalkerClasses

Новичок
В любом фреймворке можно определить путь:

news_list <controller><action>
news_show <controller><action>/{id}

Как будут выглядеть логика роутинга если например news_list должен появлятся на странице page1/page2/page3/ [news_list] <controller><action>
page1/page2/page3/ [news_show] <controller><action>/{id}

Как дерево встраивается в роутинг? И как генерировать в таком случае ссылки - ведь тогда нужно знать не просто <controller> и <action> но а также и ID-страницы где все это выводить. Можно пожалуйста примеров и ссылок где про это можно подробно почитать. Желательно на примере Yii2.
 

StalkerClasses

Новичок
Прекрасно понимаю как работает принцип
<controller><action>

Если он находит маршрут такой-то тако - то вызывается соответствующий контролер, действие.
Но не совсем понимаю если маршрут строится из дерева страниц - как в этом случае идет обработка?
 

AnrDaemon

Продвинутый новичок
Так же.
Ты ошибочно считаешь строку пути "деревом", это просто строка.
 

StalkerClasses

Новичок
Так же.
Ты ошибочно считаешь строку пути "деревом", это просто строка.
Дерево получается одним контроллером обрабатывается?
Как мне например сделать что бы по этому пути показывалась фичисески и страница и новости?
/about/company/news/
/about/company/news/1/
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@StalkerClasses, в контроллере блок данных разруливай, и потом показывай в шаблоне в нужном месте. То чего ты хочешь - не существует. Нет никакой иерархии в роутинге, все будет так, как ты напишешь это сам.
 

StalkerClasses

Новичок
Я хотел бы сделать дерево страниц на основе БД не ограниченного числа вложенности.

Раздел 0 /
Раздел 1 service/
Раздел 2 about/
Раздел 2.1 about/news/
Раздел 2.2 about/vacansies/.
Раздел 2.3.about/onzivi/
Раздел 3.contacts/

Как это бы описать с точки зрения роутера известно. На каждый адрес бы был зарегестрировал бы свой <controller> <action>.
Знаю что делают деревья - но не совсем пойму как тогда они прописывают контроллер и действие. Как производится обработка того, что есть в БД и того что прописано в router?

Как ссылки тогда генерируются. Ведь надо знать pageId.?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@StalkerClasses, у тебя роутер может быть один на все, или по одному на каждую строку. Как реализуешь - это уже твои заморочки, пока что ты задачу даже примерно не описал.

"Знаю что делают деревья" - это как?

У тебя в каждой строке может быть прописан контроллер и его экшн, для обработки строки роутинга.

Я бы в подобной схеме добавил модуль "блоки" для контента, то есть какой-то набор логики, который бы расширял контент по-умолчанию и выводил бы что-то еще (простой вариант). Но все зависит от того, что ты хочешь получить в итоге.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
В любом фреймворке можно определить путь:

news_list <controller><action>
news_show <controller><action>/{id}
Это не путь. Путь - это /talk/threads/
Что такое news_list - непонятно совсем.

<controller><action> - это макрос, который работает как регулярное выражение для обработки пути. Простым перебором по циклу проверяется соответствие макросов и пути, если регулярка сработала - считается, что нашли контроллер и action.

Как будут выглядеть логика роутинга если например news_list должен появлятся на странице page1/page2/page3/ [news_list] <controller><action>
page1/page2/page3/ [news_show] <controller><action>/{id}
Логика роутинга вообще не связана с появлением на странице чего-бы то ни было.
Роутинг - это разбор HTTP-запроса приложением на сервере.
Появление данных на странице - это рендеринг в браузере пользователя.

Сначала определись что такое news_list.

Как дерево встраивается в роутинг?
Что именно ты называешь деревом? Бинарные деревья - это логическая структура, а роутинг - это код.
Какие данные ты хочешь сформировать в виде дерева?
Как ты хочешь обрабатывать данные?
Как роутинг связан с данными?

Вообще ничего не понятно.

И как генерировать в таком случае ссылки - ведь тогда нужно знать не просто <controller> и <action> но а также и ID-страницы где все это выводить. Можно пожалуйста примеров и ссылок где про это можно подробно почитать. Желательно на примере Yii2.
Ссылки на что ты хочешь генерировать?
ID какой страницы?
Что именно ты хочешь выводить?

Если ты разговаривариваешь сам с собой - ответить сможешь только ты сам.
Если с другими - используй слова в их словарных значениях.
 

AnrDaemon

Продвинутый новичок
Иногда у меня возникает большое желание посоветовать постучать об стену. Желательно - лбом. Желательно - посильнее.
Чтобы мусор вытряхнуть и посмотреть на проблему не с точки зрения решения, а с точки зрения проблемы.
А то вобьют себе в голову какие-то "деревья" и носятся с ними, как с писаной торбой…
 
Сверху