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

2021.02.14  |  415

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

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' => [ ... App\Providers\ComposerServiceProvider::class, ], ... Создаем провайдер: app/Providers/ComposerServiceProvider.php Добавляем в него наш новый View Composer: namespace App\Providers; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; class ComposerServiceProvider extends ServiceProvider { public function register() { } public function boot() { View::composer( 'layouts.sidebar', 'App\Http\ViewComposers\ShowSideBar' ); } } Создаем View Composers: app/Http/ViewComposers/ShowSideBar.php Добавляем в него код получения статей: namespace App\Http\ViewComposers; use App; use App\Models\Article; use Illuminate\View\View; class ShowSideBar { public function compose(View $view) { $articles = Article::where('active', 1) ->orderBy('date') ->take(10) ->get(); return $view->with(['articles' => $articles]); } } Теперь на каждой странице сайта вы должны видеть список статей и не вам не нужно повторять его получение в контроллерах страниц.