;
Belajar Laravel dengan Mudah dan Menyenangkan
Controller adalah kelas di Laravel yang menangani logika aplikasi, seperti mengambil data dari model dan mengirimkannya ke view. Controller membantu menjaga kode di route tetap rapi dengan memisahkan logika bisnis dari definisi rute.
Controller bertindak sebagai perantara antara model (data) dan view (tampilan). Misalnya, controller mengambil data dari tabel posts dan mengirimkannya ke halaman web untuk ditampilkan.
Berikut langkah-langkah membuat controller untuk menampilkan daftar postingan dari tabel posts (dengan kolom id, title, content).
Pastikan kamu sudah:
.env.posts dengan migration dan mengisi data (misalnya, via seeder atau factory).Post dengan php artisan make:model Post.resources/views/posts.blade.php (contoh dari tutorial Blade sebelumnya).Buat Controller
Jalankan perintah berikut untuk membuat controller:
php artisan make:controller PostController
Ini akan membuat file app/Http/Controllers/PostController.php.
Edit Controller
Buka PostController.php dan tambahkan metode index untuk menampilkan daftar postingan. Contoh kode:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
$posts = Post::all(); // Ambil semua data dari tabel posts
return view('posts', ['posts' => $posts]); // Kirim ke view
}
}
Penjelasan:
Post::all(): Mengambil semua data dari tabel posts menggunakan model Post.view('posts', ...): Mengirim data ke file resources/views/posts.blade.php.Hubungkan Route ke Controller
Buka routes/web.php dan tambahkan rute untuk memanggil controller:
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index']);
Buat View (Jika Belum Ada)
Pastikan resources/views/posts.blade.php ada, misalnya:
<!DOCTYPE html>
<html lang="id">
<head>
<title>Daftar Postingan</title>
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-gray-100 p-6">
<h1 class="text-2xl font-bold mb-4">Daftar Postingan</h1>
@if ($posts->isEmpty())
<p>Tidak ada postingan.</p>
@else
<ul class="list-disc pl-6">
@foreach ($posts as $post)
<li>
<h2 class="text-xl font-semibold">{{ $post->title }}</h2>
<p>{{ $post->content }}</p>
</li>
@endforeach
</ul>
@endif
</body>
</html>
Jalankan Server
Jalankan server Laravel dengan:
php artisan serve
Buka http://localhost:8000/posts di browser. Kamu akan melihat daftar postingan dari tabel posts.
Tambahkan metode lain di PostController untuk operasi CRUD:
public function show($id)
{
$post = Post::find($id);
return view('post', ['post' => $post ?: null]);
}
public function store(Request $request)
{
$post = Post::create([
'title' => $request->title,
'content' => $request->content,
]);
return redirect('/posts');
}
Tambahkan rute di routes/web.php:
Route::get('/posts/{id}', [PostController::class, 'show']);
Route::post('/posts', [PostController::class, 'store']);
Jika tabel posts berisi data:
[
{"id": 1, "title": "Belajar Laravel", "content": "Laravel sangat mudah..."},
{"id": 2, "title": "Controller", "content": "Mengelola logika..."}
]
Halaman /posts akan menampilkan:
$request->validate().Selamat! Kamu sudah menguasai dasar Controller di Laravel untuk mengelola logika aplikasi!