fomvasss
@fomvasss
PHP developer

Какой подход лучше использовать для передачи переменной во все blade-шаблоны в Laravel?

На сайте, для примера есть меню, в котором нужно выводить категории и подвал, в котором нужно вывести список городов. При этом нужно не привязываться к названию шаблона фронтенда на бекенде, так как, должна быть возможность эти данные, выводить в в других частях шаблона сайта, не переписывая/дописывая потом бекенд код.
Мне известно два возможных способа реализации вышесказанного на Laravel:
1. View::share('key', 'value');
2.
View::composer('*', function ($view) {
    //
});

Но как-то оно не "элегантно" выходит, да и использование глобальных переменных не самая хорошая идея, ну и запрос данных получается нужно писать в классе сервис провайдера (или view composer-а). Но другого способа я пока не знаю.
Есть ли рекомендации или подходы по реализации такого функционала?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Не нравятся «глобальные» переменные, используйте вариант №2.

Не нравятся запросы в сервис-провайдерах, делайте их в каких-нибудь сторонних классах, а в сервис-провайдере вызывайте этот класс.
Либо пусть сервис провайдер обращается к какому-то классу и получает все нужные переменные для композинга.

Вариант №3: подписываться на события композинга самостоятельно и строить свою логику.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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