; Memahami Controller dengan Contoh Sederhana - Blog Rudi Kurniawan

Blog Laravel Indonesia

Belajar Laravel dengan Mudah dan Menyenangkan

Memahami Controller dengan Contoh Sederhana
11-07-2025 | Admin User Programming 20 x dilihat

Memahami Controller dengan Contoh Sederhana

Apa Itu Controller di Laravel?

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.

Hubungan dengan Aplikasi

Controller bertindak sebagai perantara antara model (data) dan view (tampilan). Misalnya, controller mengambil data dari tabel posts dan mengirimkannya ke halaman web untuk ditampilkan.

Tutorial Membuat Controller

Berikut langkah-langkah membuat controller untuk menampilkan daftar postingan dari tabel posts (dengan kolom id, title, content).

Persiapan

Pastikan kamu sudah:

  • Menginstal Laravel dan mengatur koneksi database di file .env.
  • Membuat tabel posts dengan migration dan mengisi data (misalnya, via seeder atau factory).
  • Membuat model Post dengan php artisan make:model Post.
  • Membuat file view resources/views/posts.blade.php (contoh dari tutorial Blade sebelumnya).

Langkah-Langkah

  1. Buat Controller
    Jalankan perintah berikut untuk membuat controller:

    php artisan make:controller PostController
    

    Ini akan membuat file app/Http/Controllers/PostController.php.

  2. 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.
  3. 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']);
    
  4. 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>
    
  5. Jalankan Server
    Jalankan server Laravel dengan:

    php artisan serve
    

    Buka http://localhost:8000/posts di browser. Kamu akan melihat daftar postingan dari tabel posts.

Menambahkan Operasi Lain

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']);

Mengapa Controller Penting?

  • Organisasi: Memisahkan logika dari route, membuat kode lebih rapi.
  • Reusability: Metode di controller bisa dipanggil dari beberapa rute.
  • Skalabilitas: Memudahkan pengelolaan aplikasi besar dengan banyak fitur.

Contoh Hasil

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:

  • Belajar Laravel: Laravel sangat mudah...
  • Controller: Mengelola logika...

Langkah Selanjutnya

  • Tambahkan operasi CRUD lengkap (create, update, delete) di controller.
  • Pelajari validasi input di controller dengan $request->validate().
  • Baca dokumentasi Controller untuk fitur seperti middleware.

Selamat! Kamu sudah menguasai dasar Controller di Laravel untuk mengelola logika aplikasi!

Share this

Facebook Whatsapp