Berikut adalah langkah lengkap untuk membuat:
✅ Model (Post)
✅ Controller resource (PostController)
✅ Migration (posts table)
✅ View (index, create, edit, show)
✅ Route (resource)
1) Artisan: Buat model
, controller
, migration
php artisan make:model Post -mcr
Penjelasan:
Post = nama model
-m = buat migration
-c = buat controller
-r = controller resource (CRUD lengkap)
2) Buat view folder dan file
mkdir -p resources/views/post
New-Item -Path resources/views/student/index.blade.php -ItemType File
New-Item -Path resources/views/student/create.blade.php -ItemType File
New-Item -Path resources/views/student/edit.blade.php -ItemType File
New-Item -Path resources/views/student/show.blade.php -ItemType File
3) Tambahkan route
Di file routes/web.php
, tambahkan:
use App\Http\Controllers\PostController;
Route::resource('post', PostController::class);
4) Contoh isi masing-masing file (biar langsung jalan)
-
resources/views/post/index.blade.php
@extends('layouts.app')
@section('content')
<h1>Daftar Post</h1>
<a href="{{ route('post.create') }}">Buat Post Baru</a>
<ul>
@foreach($posts as $post)
<li>{{ $post->judul }} - <a href="{{ route('post.edit', $post) }}">Edit</a></li>
@endforeach
</ul>
@endsection
-
resources/views/post/create.blade.php
@extends('layouts.app')
@section('content')
<h1>Buat Post</h1>
<form action="{{ route('post.store') }}" method="POST">
@csrf
<input type="text" name="judul" placeholder="Judul">
<button type="submit">Simpan</button>
</form>
@endsection
-
resources/views/post/edit.blade.php
@extends('layouts.app')
@section('content')
<h1>Edit Post</h1>
<form action="{{ route('post.update', $post) }}" method="POST">
@csrf
@method('PUT')
<input type="text" name="judul" value="{{ $post->judul }}">
<button type="submit">Update</button>
</form>
@endsection
-
resources/views/post/show.blade.php
@extends('layouts.app')
@section('content')
<h1>{{ $post->judul }}</h1>
<a href="{{ route('post.index') }}">Kembali</a>
@endsection
5) Contoh Migration (database/migrations/..._create_posts_table.php)
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('judul');
$table->timestamps();
});
}
Lalu jalankan:
php artisan migrate
6) Contoh PostController Resource
Di app/Http/Controllers/PostController.php
:
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return view('post.index', compact('posts'));
}
public function create()
{
return view('post.create');
}
public function store(Request $request)
{
$validated = $request->validate([
'judul' => 'required|string|max:255',
]);
Post::create($validated);
return redirect()->route('post.index');
}
public function show(Post $post)
{
return view('post.show', compact('post'));
}
public function edit(Post $post)
{
return view('post.edit', compact('post'));
}
public function update(Request $request, Post $post)
{
$validated = $request->validate([
'judul' => 'required|string|max:255',
]);
$post->update($validated);
return redirect()->route('post.index');
}
public function destroy(Post $post)
{
$post->delete();
return redirect()->route('post.index');
}
}
Top comments (0)