Хочу сделать правильно. Задумано, что можно создавать страницы на сайте через панель администратора. Создана таблицы pages в базе данных. Модель Page и контроллер-ресурс PageController. Также настроен роут.
В контроллере PageController для отображения страницы в методе show возвращаю вид и данные для отображения. Тут всё понятно. Запроси страницу - получил.
Когда буду писать админку, то задействую остальные методы контроллера PageController: store, destroy и другие, включая index - для отображения списка всех страниц. Таким образом одна таблица в базе данных - одна модель, один роут-ресурс, один контроллер.
Однако на сайте есть меню, вынесенное как отдельное представление. Возникает вопрос - как динамически генерировать меню. Метод index контроллера PageController занят (для админки; смотри выше). К тому же моё меню - это отдельное представление, ребёнок родителя. Туда данные так просто не передашь - придётся передавать в каждый вид-родитель, а это куча ненужного кода, ведь меню выводится на каждой странице сайта.
Вот собственно и вопрос - как выкрутиться? Как получить данные для отображения этого меню? Так сказать True Laravel Way.
Для этих целей следует использовать View Composers. Можно назначать данные определённым видам и т.п. Очень удобно.
Недавно делал то же самое.
Я делал так:
Выстраиваем в контроллере массив следующим образом: в начало кладем самых старших, потом их детей(не внуков) и так далее.
Дальше за один проход просто вставляем элементы друг в друга. Конструкция массива позволяет. Вставлять можно в domdocumet c php или прямо в страничку c ajax.
Таким образом мы не будем делать много действий на фронт энде и прописывать меню.
А таблицу со страницами через внешний ключ подключим к элементу меню. Т.е. будет 2 контроллера NavigationElementsController и PagesController.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости