@Rigorbb

Как расшарить переменную между контроллерами?

Сайт построен на виджетах(по сути отдельные контроллеры), из которых компонуется страница. Т.е. при построении страницы дергаются несколько экшенов для каждого виджета. В этих экшенах запрашивается один и тот же репозиторий, который возвращает один и тот же набор данных. Соответственно, этих запросов ровно столько, сколько виджетов на странице. Каким образом можно расшарить эти данные между контроллерами этих виджетов или между вьюхами этих виджетов?

В документации прочитал только про addGlobal, но не совсем понимаю где в моем случае нужно проводить эту инициализацию. Также она расшаривает переменную во всех вьюхах, а мне хотелось бы только для нескольких. В идеале найти какой-то аналог view composer laravel.
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@GrizliK1988
Если следовать прямо вашему вопросу, то можно создать сервис, который получит данные и сохранит внутри себя (скажем просто в приватных свойствах), затем в виджетах запрашивать данные из этого сервиса.

Такой подход неудобен тем, что:
1. Нужно сохранить данные до оторажения всех виджетов.
2. Нужно знать какие данные нужны виджетам в отдельном от виджетов месте.

Другой путь - репоизторий обернуть еще в 1 сервис, который будет дергать методы и кешировать полученные данные.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
banderos120
@banderos120
Играю на балалайке
Если я правильно понял, может вам использовать include with в twig
Ответ написан
Комментировать
@mops1k
PHP-разработчик
Создайте сервис с необходимым функционалом и вызывайте его где надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы