Содержание
скрыть
Контроллер
Выполним команду:
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