[PHP|Laravel] Tworzymy blog, część 3 - kontroler i model

Pora na część poświęconą utworzeniu kontroltera i modelu do obsługi naszego bloga, a raczej postów.

Kontroler PostController

Utwórz plik kontrolera PostController poleceniem php artisan make:controller PostController lub ręcznie w swoim edytorze i dopisz odpowiednie metody:

<?php

namespace AppHttpControllers;

use AppModelsPost;
use IlluminateHttpRequest;

class PostController extends Controller
{
    /**
     * Wyświetlanie listy postów.
     */
    public function index()
    {
        $posts = Post::all();
        return view('posts.index', compact('posts'));
    }
    
    /**
     * Wyświetlanie pojedynczego posta.
     */
    public function single($id)
    {
        $post = Post::findOrFail($id);
        
        return view('posts.single', ['post' => $post])->with('title', $post->title);

    }

    /**
     * Wyświetlanie formularza tworzenia nowego posta.
     */
    public function create()
    {
        return view('posts.create');
    }

    /**
     * Zapisywanie nowego posta.
     */
    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'content' => 'required',
        ]);

        Post::create($request->all());

        return redirect()->route('posts.index')
            ->with('success', 'Post created successfully.');
    }

    /**
     * Wyświetlanie formularza edycji posta.
     */
    public function edit(Post $post)
    {
        return view('posts.edit', compact('post'));
    }

    /**
     * Aktualizowanie posta.
     */
    public function update(Request $request, Post $post)
    {
        $request->validate([
            'title' => 'required',
            'content' => 'required',
        ]);

        $post->update($request->all());

        return redirect()->route('posts.index')
            ->with('success', 'Post updated successfully.');
    }

    /**
     * Usuwanie posta.
     */
    public function destroy(Post $post)
    {
        $post->delete();

        return redirect()->route('posts.index')
            ->with('success', 'Post deleted successfully.');
    }
}

Model Post

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = [
        'title',
        'content',
    ];
}

Po utworzeniu kontroltera i modelu do obsługi postów, możesz przejść do kolejnej części: Tworzenie bloga w Laravel, część 4 - widoki.

Komentarze

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[HTML] Jak wyśrodkować tekst?

[PHP] Jak pobrać adres strony?