Advertisement
Guest User

PostsController.php

a guest
Apr 26th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.82 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Illuminate\Http\Request;
  6. use App\Http\Requests\PostRequest;
  7. use App\Post;
  8. use App\Tag;
  9.  
  10. class PostsController extends Controller
  11. {
  12.     public function __construct()
  13.     {
  14.         $this->middleware('auth')->except(['index', 'show']);
  15.     }
  16.  
  17.     /**
  18.      * Display a listing of the resource.
  19.      *
  20.      * @return \Illuminate\Http\Response
  21.      */
  22.     public function index()
  23.     {
  24.         $posts = Post::latest()
  25.             ->filter(request(['month', 'year']))
  26.             ->simplePaginate(5);
  27.  
  28.         return view('blog.index', compact('posts'));
  29.     }
  30.  
  31.     /**
  32.      * Show the form for creating a new resource.
  33.      *
  34.      * @return \Illuminate\Http\Response
  35.      */
  36.     public function create()
  37.     {
  38.         $tags = Tag::all('name', 'id');
  39.  
  40.         return view('blog.create', compact('tags'));
  41.     }
  42.  
  43.     /**
  44.      * Store a newly created resource in storage.
  45.      *
  46.      * @param  \Illuminate\Http\Request  $request
  47.      * @return \Illuminate\Http\Response
  48.      */
  49.     public function store(PostRequest $request)
  50.     {
  51.         $this->createPost($request);
  52.  
  53.         $request->session()->flash('status', 'Your post has been published.');
  54.  
  55.         return redirect('blog');
  56.     }
  57.  
  58.     /**
  59.      * Display the specified resource.
  60.      *
  61.      * @param  int  $id
  62.      * @return \Illuminate\Http\Response
  63.      */
  64.     public function show(Post $post)
  65.     {
  66.         return view('blog.show', compact('post'));
  67.     }
  68.  
  69.     /**
  70.      * Show the form for editing the specified resource.
  71.      *
  72.      * @param  int  $id
  73.      * @return \Illuminate\Http\Response
  74.      */
  75.     public function edit(Post $post)
  76.     {
  77.         $tags = Tag::all('name', 'id');
  78.  
  79.         return view('blog.edit', compact('post', 'tags'));
  80.     }
  81.  
  82.     /**
  83.      * Update the specified resource in storage.
  84.      *
  85.      * @param  \Illuminate\Http\Request  $request
  86.      * @param  int  $id
  87.      * @return \Illuminate\Http\Response
  88.      */
  89.     public function update(Request $request, Post $post)
  90.     {
  91.         $post->update($request->except('tag_list'));
  92.  
  93.         $this->syncTags($post, $request->input('tag_list'));
  94.  
  95.         $request->session()->flash('status', 'Your post has been updated.');
  96.  
  97.         return redirect('blog');
  98.     }
  99.  
  100.     /**
  101.      * Remove the specified resource from storage.
  102.      *
  103.      * @param  int  $id
  104.      * @return \Illuminate\Http\Response
  105.      */
  106.     public function destroy($post)
  107.     {
  108.         //
  109.     }
  110.  
  111.     private function createPost(Request $request)
  112.     {
  113.         $post = auth()->user()->publish(new Post(request(['title', 'body'])));
  114.  
  115.         $this->syncTags($post, $request->input('tag_list'));
  116.  
  117.         return $post;
  118.     }
  119.  
  120.     private function syncTags(Post $post, array $tags)
  121.     {
  122.         $post->tags()->sync($tags);
  123.     }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement