Larapak
Ctrl K

Struktur Controller

Controller bertugas menerima permintaan HTTP dari pengguna, memproses data bisnis bersama model, dan mengembalikan hasil ke peramban berupa tampilan HTML atau data JSON.

File controller ditempatkan di jeroan/Pangatur/ dengan ekstensi .ngpk. Anda dapat membuat controller baru dengan perintah dialek Ngapak:

# Dialek Ngapak (Rekomendasi)
ngapakin gawe:pangatur ProdukController

# Atau menggunakan alias standar
ngapakin make:controller ProdukController

Contoh Lengkap Controller

# jeroan/Pangatur/ProdukController.ngpk

gawe index(req, res)
    # Mengambil seluruh data produk dari database
    daftar_produk = db.tabel("produk").pilih().jupuk()
    
    # Mengirimkan data ke view template
    konteks = ["title": "Katalog Produk", "produk": daftar_produk]
    balekna res.view("produk.index", konteks)
rampung

gawe simpan(req, res)
    # Membaca data body request formulir
    nama = req.body["nama"]
    harga = req.body["harga"]

    # Simpan ke database
    db.tabel("produk").lebokna(["nama": nama, "harga": harga])

    # Redirect ke halaman utama
    balekna res.redirect("/produk")
rampung

gawe api_list(req, res)
    # Mengembalikan response JSON untuk REST API
    data = db.tabel("produk").pilih().jupuk()
    balekna res.json(["status": "sukses", "data": data])
rampung

Objek Request (req)

Setiap aksi controller menerima parameter req yang menyediakan akses ke seluruh data permintaan:

  • req.params: Dictionary parameter URL dinamis (contoh: req.params["slug"]).
  • req.query: Parameter query string (contoh: req.query["cari"] pada /produk?cari=kaos).
  • req.body: Data payload formulir (POST/PUT) atau parsed JSON body.
  • req.headers: Header HTTP dari klien (contoh: req.headers["authorization"]).

Objek Response (res)

  • res.view(view_name, context): Merender template tampilan di sawangan/.
  • res.json(data, status=200): Mengirim data terformat JSON.
  • res.redirect(url, status=302): Mengalihkan pengguna ke URL lain.
  • res.cookie(nama, nilai): Mengatur HTTP cookie klien.