Содержание
скрыть
Контроллер
Выполним команду:
php artisan make:controller CategoryController
В него запишем:
<?php namespace App\Http\Controllers; use App\Models\Category; class CategoryController extends Controller { public function show($slug) { $category = Category::where('slug', $slug)->firstOrFail(); $posts = $category->posts()->orderBy('id', 'desc')->paginate(2); $categories = Category::select('title', 'slug')->get(); return view('categories.show', compact('posts', 'category', 'categories')); } }
Вью
Создадим файл resources/views/layouts/category_layout.blade.php . Скопируем в него все из resources/views/layouts/layout.blade.php . Изменим и получим следующее:
<!DOCTYPE html> <html lang="en"> <!-- Basic --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Mobile Metas --> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Site Metas --> <title>@yield('title')</title> <meta name="keywords" content=""> <meta name="description" content=""> <meta name="author" content=""> <!-- Site Icons --> <link rel="shortcut icon" href="{{ asset('assets/front/images/favicon.ico') }}" type="image/x-icon" /> <link rel="apple-touch-icon" href="{{ asset('assets/front/images/apple-touch-icon.png') }}"> <!-- Design fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto+Slab:400,700" rel="stylesheet"> <link href="{{ asset('assets/front/css/admin.css') }}" rel="stylesheet"> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div id="wrapper"> <header class="market-header header"> <div class="container-fluid"> <nav class="navbar navbar-toggleable-md navbar-inverse fixed-top bg-inverse"> <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="{{ route('home') }}"><img src="/assets/front/images/version/market-logo.png" alt=""></a> <div class="collapse navbar-collapse" id="navbarCollapse"> <ul class="navbar-nav mr-auto"> @foreach ($categories as $category) <li class="nav-item"> <a class="nav-link" href="{{ route('categories.single', ['slug' => $category->slug]) }}">{{ $category->title }}</a> </li> @endforeach </ul> <form class="form-inline"> <input class="form-control mr-sm-2" type="text" placeholder="How may I help?"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> </div> </nav> </div><!-- end container-fluid --> </header><!-- end market-header --> @yield('page-title') <section class="section lb @if(!Request::is('/')) m3rem @endif"> <div class="container"> <div class="row"> <div class="col-lg-4 col-md-12 col-sm-12 col-xs-12"> @include('layouts.sidebar') </div><!-- end col --> <div class="col-lg-8 col-md-12 col-sm-12 col-xs-12"> @yield('content') </div><!-- end col --> </div><!-- end row --> </div><!-- end container --> </section> <footer class="footer"> <div class="container"> <div class="row"> <div class="col-lg-4 col-md-12 col-sm-12 col-xs-12"> <div class="widget"> <h2 class="widget-title">Recent Posts</h2> <div class="blog-list-widget"> <div class="list-group"> <a href="marketing-single.html" class="list-group-item list-group-item-action flex-column align-items-start"> <div class="w-100 justify-content-between"> <img src="/assets/front/upload/small_04.jpg" alt="" class="img-fluid float-left"> <h5 class="mb-1">5 Beautiful buildings you need to before dying</h5> <small>12 Jan, 2016</small> </div> </a> <a href="marketing-single.html" class="list-group-item list-group-item-action flex-column align-items-start"> <div class="w-100 justify-content-between"> <img src="/assets/front/upload/small_05.jpg" alt="" class="img-fluid float-left"> <h5 class="mb-1">Let's make an introduction for creative life</h5> <small>11 Jan, 2016</small> </div> </a> <a href="marketing-single.html" class="list-group-item list-group-item-action flex-column align-items-start"> <div class="w-100 last-item justify-content-between"> <img src="/assets/front/upload/small_06.jpg" alt="" class="img-fluid float-left"> <h5 class="mb-1">Did you see the most beautiful sea in the world?</h5> <small>07 Jan, 2016</small> </div> </a> </div> </div><!-- end blog-list --> </div><!-- end widget --> </div><!-- end col --> <div class="col-lg-4 col-md-12 col-sm-12 col-xs-12"> <div class="widget"> <h2 class="widget-title">Popular Posts</h2> <div class="blog-list-widget"> <div class="list-group"> <a href="marketing-single.html" class="list-group-item list-group-item-action flex-column align-items-start"> <div class="w-100 justify-content-between"> <img src="/assets/front/upload/small_01.jpg" alt="" class="img-fluid float-left"> <h5 class="mb-1">Banana-chip chocolate cake recipe with customs</h5> <span class="rating"> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> </span> </div> </a> <a href="marketing-single.html" class="list-group-item list-group-item-action flex-column align-items-start"> <div class="w-100 justify-content-between"> <img src="/assets/front/upload/small_02.jpg" alt="" class="img-fluid float-left"> <h5 class="mb-1">10 practical ways to choose organic vegetables</h5> <span class="rating"> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> </span> </div> </a> <a href="marketing-single.html" class="list-group-item list-group-item-action flex-column align-items-start"> <div class="w-100 last-item justify-content-between"> <img src="/assets/front/upload/small_03.jpg" alt="" class="img-fluid float-left"> <h5 class="mb-1">We are making homemade ravioli, nice and good</h5> <span class="rating"> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> <i class="fa fa-star"></i> </span> </div> </a> </div> </div><!-- end blog-list --> </div><!-- end widget --> </div><!-- end col --> <div class="col-lg-4 col-md-12 col-sm-12 col-xs-12"> <div class="widget"> <h2 class="widget-title">Popular Categories</h2> <div class="link-widget"> <ul> <li><a href="#">Marketing <span>(21)</span></a></li> <li><a href="#">SEO Service <span>(15)</span></a></li> <li><a href="#">Digital Agency <span>(31)</span></a></li> <li><a href="#">Make Money <span>(22)</span></a></li> <li><a href="#">Blogging <span>(66)</span></a></li> <li><a href="#">Entertaintment <span>(11)</span></a></li> <li><a href="#">Video Tuts <span>(87)</span></a></li> </ul> </div><!-- end link-widget --> </div><!-- end widget --> </div><!-- end col --> </div><!-- end row --> <div class="row"> <div class="col-md-12 text-center"> <br> <br> <div class="copyright">© Markedia. Design: <a href="http://html.design">HTML Design</a>.</div> </div> </div> </div><!-- end container --> </footer><!-- end footer --> <div class="dmtop">Scroll to Top</div> </div><!-- end wrapper --> <!-- Core JavaScript ================================================== --> <script src="{{ asset('assets/front/js/admin.js') }}"></script> </body> </html>
Создадим resources/views/categories/show.blade.php в него скопируем все из resources/views/posts/show.blade.php . Изменим и получим:
@extends('layouts.category_layout') @section('title', 'Markedia - Категория ' . $category->title) @section('page-title') <div class="page-title db"> <div class="container"> <div class="row"> <div class="col-lg-8 col-md-8 col-sm-12 col-xs-12"> <h2> Marketing <small class="hidden-xs-down hidden-sm-down">{{ $category->title }}</small></h2> </div><!-- end col --> <div class="col-lg-4 col-md-4 col-sm-12 hidden-xs-down hidden-sm-down"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="{{ route('home') }}">Home</a></li> <li class="breadcrumb-item active">{{ $category->title }}</li> </ol> </div><!-- end col --> </div><!-- end row --> </div><!-- end container --> </div><!-- end page-title --> @endsection @section('content') <div class="page-wrapper"> <div class="blog-custom-build"> @foreach($posts as $post) <div class="blog-box wow fadeIn"> <div class="post-media"> <a href="{{ route('posts.single', ['slug' => $post->slug]) }}" title=""> <img src="{{ $post->getImage() }}" alt="" class="img-fluid"> <div class="hovereffect"> <span></span> </div> <!-- end hover --> </a> </div> <!-- end media --> <div class="blog-meta big-meta text-center"> <div class="post-sharing"> <ul class="list-inline"> <li><a href="#" class="fb-button btn btn-primary"><i class="fa fa-facebook"></i> <span class="down-mobile">Share on Facebook</span></a></li> <li><a href="#" class="tw-button btn btn-primary"><i class="fa fa-twitter"></i> <span class="down-mobile">Tweet on Twitter</span></a></li> <li><a href="#" class="gp-button btn btn-primary"><i class="fa fa-google-plus"></i></a> </li> </ul> </div><!-- end post-sharing --> <h4><a href="{{ route('posts.single', ['slug' => $post->slug]) }}" title="">{{ $post->title }}</a></h4> {!! $post->description !!} <small><a href="{{ route('categories.single', ['slug' => $category->slug]) }}" title="">{{ $category->title }}</a></small> <small>{{ $post->getPostDate() }}</small> <small><i class="fa fa-eye"></i> {{ $post->views }}</small> </div><!-- end meta --> </div><!-- end blog-box --> <hr class="invis"> @endforeach </div> </div> <hr class="invis"> <div class="row"> <div class="col-md-12"> <nav aria-label="Page navigation"> {{ $posts->links() }} </nav> </div> </div><!-- end row --> @endsection