как получить данные из БД в подчинённом представлении (subview, partial view)?

Переписываю старый сайт на Laravel. На каждой странице есть общие блоки, которые одинаковы для всех страниц. Например, список всех тегов, который берётся из базы данных. Если я напишу подчинённое представление (не знаю, как точнее перевести subview или partial view) для списка тегов и включу его в общую вёрстку (layout), то где мне написать код, который будет извлекать из БД данные и передавать их в это представление? Кажется, что нужен контроллер для него, но я не понимаю, как он будет вызываться. Обыскал пол-интернета, пока не нашёл ответа.

Подробнее. Я сделал шаблон для списка тегов views/shared/all_tags.blade.php:

<div>
...
</div>

Я включил его в общий шаблон страниц views/layouts/app.blade.php:

@include('shared.all_tags')

Но в all_tags.blade.php мне нужны данные из базы данных. И они нужны только в этом представлении. Поэтому хочется привязать код для их получения только к этому представлению. Не хочется получать их где-то вовне и передавать через второй параметр @include, как советуют в документации Laravel. Ещё видел способ через view composer. Но это подаётся как средство передать одни и те же данные сразу во многие представления, как я понял. Поэтому мне это кажется не совсем подходящим к моему случаю, когда эти данные нужны только в этом представлении.

Т. е., как я понимаю, мне нужен контроллер (или что-то вроде) для этого представления. Но я не понимаю, кто и как будет его вызывать и надо ли (и как) включать его в маршрутизацию.


Ответы (1 шт):

Автор решения: Liudmila Savateeva

Необходимо пользоваться именно composer для представления. Вы неверно поняли, что данные которые можно подтянуть композерами для многих представлений. Композеры настраиваются как раз для конкретного представления. Это очевидно из реализации метода compose класса композера. Ну и в провайдере будет указано представление, для которого он отработает. Посмотрите подробнее документацию View Composers

→ Ссылка