21. Данные сайдбара

View Composer

Изменим app/Providers/AppServiceProvider.php :

public function boot()
{
    view()->composer(['layouts.category_layout', 'layouts.layout'], function ($view) {
        $view->with('categories', Category::select('title', 'slug')->withCount('posts')->orderBy('posts_count', 'desc')->get())->with('popularPosts', Post::orderBy('views', 'desc')->limit(3)->get());
    });
}

 

То есть теперь мы передаем переменные $categories, $popularPosts в виды ‘layouts.category_layout’, ‘layouts.layout’ и можем удалить:

$categories = Category::select('title', 'slug')->get();

из всех контроллеров.

$categories мы передаем с количеством постов в каждой категории.

Кэширование

В app/Providers/AppServiceProvider.php

Подключим фасад Cache:

use Illuminate\Support\Facades\Cache;

И кэшируем категории:

public function boot()
{
    view()->composer(['layouts.category_layout', 'layouts.layout'], function ($view) {
        if (Cache::has('categories')) {
            $categories = Cache::get('categories');
        } else {
            $categories = Category::select('title', 'slug')->withCount('posts')->orderBy('posts_count', 'desc')->get();
            Cache::put('categories', $categories, 30);
        }

        $view->with('categories', $categories)->with('popularPosts', Post::orderBy('views', 'desc')->limit(3)->get());
    });
}

 

 

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x