Глобализация всех общих переменных в Laravel

#laravel #laravel-5

#laravel #laravel-5

Вопрос:

У меня есть некоторая общая переменная в моем проекте Laravel. Например, логотип, ico, заголовок и т.д. будут отображаться из их соответствующих моделей. Теперь проблема в том, что мне нужно объявить все переменные в каждом индексном методе контроллеров, в противном случае система сообщает, что переменная не определена. Как я могу сделать эти переменные глобальными?

Комментарии:

1. может быть, в этом случае вы можете объявить все свои переменные в Controller.php конструктор файла. Затем, когда вы расширяете этот класс, все переменные по умолчанию доступны в вашем дочернем контроллере

Ответ №1:

Вы можете использовать составители представлений или совместно использовать данные со всеми представлениями — это прямо в документации.

Простым примером использования view composer для совместного использования переменной со всеми представлениями было бы использование оператора wildcard ( * ). Помните, вы захотите зарегистрировать все это у одного из ваших поставщиков услуг.

 use AppLogo;
use IlluminateSupportFacadesView;

View::composer('*', function ($view) {
    $view->with('logo', Logo::first());
});
  

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

В противном случае, проще говоря, вы можете просто использовать share метод.

 View::share('logo', Logo::first());