Рубрика: Laravel

Как закешировать пагинацию в Laravel?Как закешировать пагинацию в Laravel?

$key = request()->get('page', 1); $posts = Cache::rememberForever("posts_$key", function() { return Post::with('categories')->with('tags')->orderByDesc('updated_at')->paginate(20); }); Так мы кешируем навсегда. После обавления нового поста, кэш нужно удалять: Создаем метод для удаления в контроллере: public

Как не обновлять timestamps (updated_at, created_at) в laravel при обновлении (сохранении записи)?Как не обновлять timestamps (updated_at, created_at) в laravel при обновлении (сохранении записи)?

$post = Referat::where('slug', $slug)->with('categories')->with('tags')->firstOrFail(); $post->timestamps = false; ++$post->views; $post->update(); То есть нужно прописать $post->timestamps = false; помимо остального.

21. Данные сайдбара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,

20. Статьи по тегу20. Статьи по тегу

Контроллер Создадим Http/Controllers/TagController.php с содержимым: <?php namespace App\Http\Controllers; use App\Models\Tag; use App\Models\Category; class TagController extends Controller { public function show($slug) { $tag = Tag::where('slug', $slug)->firstOrFail(); $posts = $tag->posts()->with('category')->orderBy('id', 'desc')->paginate(2); $categories

18. Страница отдельной статьи18. Страница отдельной статьи

Изменим app/Http/Controllers/PostController.php: public function show($slug) { $categories = Category::select('title', 'slug')->get(); $post = Post::where('slug', $slug)->firstOrFail(); ++$post->views; $post->update(); return view('posts.show', compact('post', 'categories')); } Там же в index добавим: $categories = Category::select('title', 'slug')->get();

17. Лента статей17. Лента статей

Админский сайдбар Сделаем сайдбар постоянно свернутым. Для обратимся к инструкции https://adminlte.io/docs/3.1//javascript/push-menu.html . Редактируем resources/views/admin/layouts/layout.blade.php : <a class="nav-link" data-widget="pushmenu" href="#" data-enable-remember="true" role="button"><i class="fas fa-bars"></i></a> Мы добавили атрибут data-enable-remember=”true”, чтобы меню запоминало

16. Шаблон пользовательской части. Часть 216. Шаблон пользовательской части. Часть 2

Разделяем шаблон Создадим файл resources/views/layouts/layout.blade.php , в который перенесем весь шаблон кроме контента и части хедера, которая будет только на главной. Подключим layout в show.blade и index.blade : @extends('layouts.layout') @section('header')

15. Шаблон пользовательской части. Часть 1.15. Шаблон пользовательской части. Часть 1.

Возьмем этот шаблон: https://www.free-css.com/free-css-templates/page244/markedia . Создадим контроллер: php artisan make:controller PostController С содержимым: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostController extends Controller { public function index() { return view('posts.index'); }