Menguasai Routing, Controller & Blade Template
Modul 03
"Menghubungkan Logika Bisnis dengan Tampilan Visual"
Di modul ini kita akan mempraktikkan konsep MVC (Model-View-Controller). Kita sudah punya Model di modul sebelumnya, sekarang kita buat Controller sebagai pemroses, View sebagai tampilan, dan Route sebagai pintu masuknya.
Alur Kerjanya: User mengetik URL -> Route menangkap URL tersebut -> Route memanggil Controller -> Controller mengambil data dari Model -> Controller mengirim data ke View (Blade) -> Tampil di Browser User.
LAB: Menyusun Tampilan Pertama
01 Membuat Controller
Buka terminal Anda, pastikan berada di dalam folder project, lalu buat sebuah controller baru bernama PostController (atau sesuaikan dengan nama model Anda sebelumnya):
php artisan make:controller PostController
File akan terbuat di app/Http/Controllers/PostController.php. Mari kita buat satu fungsi untuk menampilkan halaman utama:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post; // Import Model Anda
class PostController extends Controller
{
public function index()
{
// Mengambil semua data dari database (nanti kita bahas lebih dalam)
$posts = Post::all();
// Melempar data ke file view bernama 'posts.index'
return view('posts.index', compact('posts'));
}
}
02 Mengatur Routing
Sekarang, beritahu Laravel URL apa yang harus diakses untuk memanggil fungsi di atas. Buka file routes/web.php dan tambahkan kode ini:
use App\Http\Controllers\PostController;
// Jika user mengakses /posts, jalankan fungsi 'index' di PostController
Route::get('/posts', [PostController::class, 'index']);
03 Meracik View (Blade Template)
Langkah terakhir, buat file tampilannya. Di dalam folder resources/views/, buat folder baru bernama posts, lalu di dalamnya buat file bernama index.blade.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Data Posts</title>
</head>
<body>
<h1>Halaman Daftar Post</h1>
<ul>
{{-- Ini cara kita melakukan looping data dari Controller di Blade --}}
@foreach ($posts as $post)
<li>{{ $post->title }}</li>
@endforeach
</ul>
</body>
</html>
Sekarang coba buka http://localhost:8000/posts di browser Anda. Anda akan melihat halaman HTML yang dirender oleh Laravel!
Sintaks kumis ganda {{ $variabel }} di Blade bukan sekadar untuk me-*print* data. Ia secara otomatis menjalankan fungsi PHP htmlspecialchars(). Artinya, aplikasi Anda sudah aman dari serangan XSS (Cross-Site Scripting) tanpa perlu konfigurasi tambahan!