Membuat controller sederhana dengan Laravel

Controller dalam Laravel memiliki beberapa fungsi utama:

  1. Menerima Input: Controller berfungsi sebagai penghubung antara rute (URL) dan logika aplikasi. Controller menerima input dari permintaan HTTP yang dikirim oleh pengguna melalui rute.

  2. Proses Bisnis: Controller adalah tempat di mana logika bisnis aplikasi berada. Controller melakukan pemrosesan data, validasi, dan operasi lainnya yang diperlukan untuk menghasilkan hasil yang akurat.

  3. Berinteraksi dengan Model: Controller berkomunikasi dengan model untuk membaca atau memodifikasi data dalam basis data. Melalui model, controller dapat membuat, membaca, memperbarui, dan menghapus data (CRUD operations).

  4. Mengirim Respon: Setelah melakukan operasi yang diperlukan, controller mengirimkan respon kembali kepada pengguna. Respon ini bisa berupa halaman HTML, data JSON, atau respon lainnya tergantung pada kebutuhan aplikasi.

  5. Mengatur Aliran Aplikasi: Controller mengatur alur aplikasi dengan memutuskan tindakan apa yang harus diambil berdasarkan input yang diterima. Ini termasuk merutekan pengguna ke halaman yang sesuai, menangani kesalahan, dan memberikan respons yang tepat.

  6. Manajemen Middleware: Controller dapat menetapkan middleware untuk menerapkan logika tertentu sebelum atau setelah tindakan dijalankan. Middleware ini dapat digunakan untuk otentikasi, otorisasi, dan validasi, di antara hal-hal lainnya.

  7. Memisahkan Logika Aplikasi: Salah satu tujuan utama dari penggunaan controller adalah memisahkan logika aplikasi dari rute dan tampilan. Ini memungkinkan pengembangan aplikasi yang bersih, terstruktur, dan mudah dipelihara.

berikut adalah contoh controller untuk operasi CRUD (Create, Read, Update, Delete) terhadap data di tabel products beserta penjelasannya.

Langkah 1: Membuat Controller CRUD menggunakan Artisan

Buka terminal atau command prompt, dan jalankan perintah berikut untuk membuat controller ProductController:

php artisan make:controller ProductController --resource

Flag --resource memberitahu Artisan bahwa Anda ingin membuat controller yang mendukung operasi CRUD (Create, Read, Update, Delete).

Langkah 2: Edit Controller ProductController.php

Buka file ProductController.php yang baru saja Anda buat dan konfigurasikan controllernya untuk mendukung operasi CRUD:

<?php

namespace App\Http\Controllers;

use App\Models\Product;

use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function index()
    {
        $products = Product::all(); // Mengambil semua produk dari tabel 'products'
        return view('products.index', compact('products'));
    }

    public function create()
    {
        return view('products.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'name' => 'required|string|max:255',
            'price' => 'required|numeric',
            'stock' => 'required|integer',
        ]);

        Product::create($request->all());

        return redirect()->route('products.index')->with('success', 'Product created successfully');
    }

    public function show($id)
    {
        $product = Product::find($id); // Mengambil produk berdasarkan ID
        return view('products.show', compact('product'));
    }

    public function edit($id)
    {
        $product = Product::find($id); // Mengambil produk berdasarkan ID
        return view('products.edit', compact('product'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'name' => 'required|string|max:255',
            'price' => 'required|numeric',
            'stock' => 'required|integer',
        ]);

        $product = Product::find($id);
        $product->update($request->all());

        return redirect()->route('products.index')->with('success', 'Product updated successfully');
    }

    public function destroy($id)
    {
        $product = Product::find($id);
        $product->delete();

        return redirect()->route('products.index')->with('success', 'Product deleted successfully');
    }
}

Penjelasan:

  1. index(): Metode ini menampilkan daftar semua produk. Data produk diambil dari model Product dan disampaikan ke tampilan products.index.

  2. create(): Metode ini menampilkan formulir untuk membuat produk baru. Tampilan formulir dapat ditemukan di products.create.

  3. store(Request $request): Metode ini menangani penyimpanan produk baru ke basis data. Data validasi dijalankan menggunakan metode validate(), kemudian produk baru dibuat menggunakan model Product::create($request->all()).

  4. show($id): Metode ini menampilkan detail produk berdasarkan ID. Produk diambil dari model Product dan disampaikan ke tampilan products.show.

  5. edit($id): Metode ini menampilkan formulir pengeditan produk. Produk yang akan diedit diambil berdasarkan ID dan disampaikan ke tampilan products.edit.

  6. update(Request $request, $id): Metode ini menangani pembaruan produk berdasarkan ID. Data validasi dijalankan menggunakan metode validate(), lalu produk yang sesuai dengan ID diupdate menggunakan metode update($request->all()).

  7. destroy($id): Metode ini menghapus produk berdasarkan ID. Produk dihapus dari basis data menggunakan metode delete().

Dengan controller ini, Anda dapat melakukan operasi CRUD lengkap pada data produk di tabel products. Pastikan Anda juga memiliki tampilan yang sesuai (misalnya, index.blade.php, create.blade.php, edit.blade.php, show.blade.php) untuk menangani interaksi pengguna dengan aplikasi Anda.

Di bab berikutnya akan belajar cara membuat view sederhana agar bisa project memiliki tampilan.

Last updated