#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());