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

19.04.2021 | 854 | SQL

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

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)