Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Http\Requests\PostRequest;
- use App\Post;
- use App\Tag;
- class PostsController extends Controller
- {
- public function __construct()
- {
- $this->middleware('auth')->except(['index', 'show']);
- }
- /**
- * Display a listing of the resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function index()
- {
- $posts = Post::latest()
- ->filter(request(['month', 'year']))
- ->simplePaginate(5);
- return view('blog.index', compact('posts'));
- }
- /**
- * Show the form for creating a new resource.
- *
- * @return \Illuminate\Http\Response
- */
- public function create()
- {
- $tags = Tag::all('name', 'id');
- return view('blog.create', compact('tags'));
- }
- /**
- * Store a newly created resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @return \Illuminate\Http\Response
- */
- public function store(PostRequest $request)
- {
- $this->createPost($request);
- $request->session()->flash('status', 'Your post has been published.');
- return redirect('blog');
- }
- /**
- * Display the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function show(Post $post)
- {
- return view('blog.show', compact('post'));
- }
- /**
- * Show the form for editing the specified resource.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function edit(Post $post)
- {
- $tags = Tag::all('name', 'id');
- return view('blog.edit', compact('post', 'tags'));
- }
- /**
- * Update the specified resource in storage.
- *
- * @param \Illuminate\Http\Request $request
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function update(Request $request, Post $post)
- {
- $post->update($request->except('tag_list'));
- $this->syncTags($post, $request->input('tag_list'));
- $request->session()->flash('status', 'Your post has been updated.');
- return redirect('blog');
- }
- /**
- * Remove the specified resource from storage.
- *
- * @param int $id
- * @return \Illuminate\Http\Response
- */
- public function destroy($post)
- {
- //
- }
- private function createPost(Request $request)
- {
- $post = auth()->user()->publish(new Post(request(['title', 'body'])));
- $this->syncTags($post, $request->input('tag_list'));
- return $post;
- }
- private function syncTags(Post $post, array $tags)
- {
- $post->tags()->sync($tags);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement