Сайт построен на виджетах(по сути отдельные контроллеры), из которых компонуется страница. Т.е. при построении страницы дергаются несколько экшенов для каждого виджета. В этих экшенах запрашивается один и тот же репозиторий, который возвращает один и тот же набор данных. Соответственно, этих запросов ровно столько, сколько виджетов на странице. Каким образом можно расшарить эти данные между контроллерами этих виджетов или между вьюхами этих виджетов?
В документации прочитал только про addGlobal, но не совсем понимаю где в моем случае нужно проводить эту инициализацию. Также она расшаривает переменную во всех вьюхах, а мне хотелось бы только для нескольких. В идеале найти какой-то аналог view composer laravel.
Если следовать прямо вашему вопросу, то можно создать сервис, который получит данные и сохранит внутри себя (скажем просто в приватных свойствах), затем в виджетах запрашивать данные из этого сервиса.
Такой подход неудобен тем, что:
1. Нужно сохранить данные до оторажения всех виджетов.
2. Нужно знать какие данные нужны виджетам в отдельном от виджетов месте.
Другой путь - репоизторий обернуть еще в 1 сервис, который будет дергать методы и кешировать полученные данные.
Можно в статической переменной, можно в обычном приватном свойстве, так как DI контейнер создает 1 экземпляр класса для сервиса (если, конечно, не используется самописная фабрика для сервиса).