Фоновый вывод "View Composer"

19.04.2021 | 559 | Bitrix Laravel

Фоновый вывод динамической информации на всех страницах

View Composers будет кстати, когда какие-то данные являются общими для для многих или вообще всех страниц. Примеры: навигация или блок с популярными статьями и т.п. Именно для таких случаев в Laravel предусмотрено элегантное решение. Так же хорошим моментом для производительности является то, что без визуального вывода код композера так же не срабатывает. Создадим шаблон для вывода: resources/views/layouts/sidebar.blade.php Добавим код для вывода статей @foreach ($articles as $article) {{ $article->active_from }} {{ $article->code }} {{ $article->name }} @endforeach Вызовем шаблон в общем шаблоне сайта (или любом другом): ... @include('layouts.articles') ... Добавим поставщика в массив "providers" файла конфигурации "config/app.php": ... 'providers' => [ ... AppProvidersComposerServiceProvider::class, ], ... Создаем провайдер: app/Providers/ComposerServiceProvider.php Добавляем в него наш новый View Composer: namespace AppProviders; use IlluminateSupportFacadesView; use IlluminateSupportServiceProvider; class ComposerServiceProvider extends ServiceProvider { public function register() { } public function boot() { View::composer( 'layouts.sidebar', 'AppHttpViewComposersShowSideBar' ); } } Создаем View Composers: app/Http/ViewComposers/ShowSideBar.php Добавляем в него код получения статей: namespace AppHttpViewComposers; use App; use AppModelsArticle; use IlluminateViewView; class ShowSideBar { public function compose(View $view) { $articles = Article::where('active', 1) ->orderBy('date') ->take(10) ->get(); return $view->with(['articles' => $articles]); } } Теперь на каждой странице сайта вы должны видеть список статей и не вам не нужно повторять его получение в контроллерах страниц.

← Назад

Комментарии (0)