[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
Prześlij komentarz
Dzięki za komentarz!