Pendahuluan
Pada tutorial ini, kita akan belajar bagaimana membuat CRUD yang ada di Codeigniter 4 menggunakan konsep Model, Controller, dan View (MVC) secara langsung, tanpa template layout. Langkah-langkah yang disajikan akan membantu kamu memahami bagaimana mengelola data produk dalam aplikasi secara efektif. Fitur ini penting karena kasir/admin perlu mengelola daftar barang yang akan dijual.
Struktur Tabel Produk
Sudah dibuat pada Part 2, dengan kolom penting:
id
(PK)kode_produk
nama_produk
harga
stok
Langkah Membuat CRUD Produk di CodeIgniter 4
Membuat Model
Langkah pertama adalah membuat model untuk produk. Model ini berfungsi sebagai representasi tabel di database dan akan menangani operasi CRUD.
Buat file baru di:app/Models/ProdukModel.php
Isi kodenya seperti berikut:
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProdukModel extends Model
{
protected $table = 'produk';
protected $primaryKey = 'id';
protected $allowedFields = ['kode_produk', 'nama_produk', 'harga', 'stok'];
}
Jangan lupa untuk membuat tabel produk
di database:
CREATE TABLE produk (
id INT AUTO_INCREMENT PRIMARY KEY,
kode_produk VARCHAR(50) UNIQUE NOT NULL,
nama_produk VARCHAR(100) NOT NULL,
harga DECIMAL(10, 2) NOT NULL,
stok INT NOT NULL DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Membuat Controller
Sekarang, kita buat controller untuk menangani request CRUD.
Buat file baru di:app/Controllers/Produk.php
Isi kodenya seperti ini:
<?php
namespace App\Controllers;
use App\Models\ProdukModel;
use CodeIgniter\Controller;
class Produk extends Controller
{
protected $produkModel;
public function __construct()
{
$this->produkModel = new ProdukModel();
helper(['form']);
}
public function index()
{
$data['produk'] = $this->produkModel->findAll();
return view('produk/index', $data);
}
public function create()
{
return view('produk/create');
}
public function store()
{
$this->produkModel->save([
'kode_produk' => $this->request->getPost('kode_produk'),
'nama_produk' => $this->request->getPost('nama_produk'),
'harga' => $this->request->getPost('harga'),
'stok' => $this->request->getPost('stok'),
]);
return redirect()->to('/produk');
}
public function edit($id)
{
$data['produk'] = $this->produkModel->find($id);
return view('produk/edit', $data);
}
public function update($id)
{
$this->produkModel->update($id, [
'kode_produk' => $this->request->getPost('kode_produk'),
'nama_produk' => $this->request->getPost('nama_produk'),
'harga' => $this->request->getPost('harga'),
'stok' => $this->request->getPost('stok'),
]);
return redirect()->to('/produk');
}
public function delete($id)
{
$this->produkModel->delete($id);
return redirect()->to('/produk');
}
}
Membuat View
Selanjutnya, buat view untuk menampilkan data.
- Buat folder:
app/Views/produk/
- Di dalamnya, buat dua file:
index.php
dancreate.php
📄 index.php
<h2>Daftar Produk</h2>
<a href="/produk/create">Tambah Produk</a>
<table border="1">
<tr>
<th>Kode</th><th>Nama</th><th>Harga</th><th>Stok</th><th>Aksi</th>
</tr>
<?php foreach ($produk as $p): ?>
<tr>
<td><?= $p['kode_produk']; ?></td>
<td><?= $p['nama_produk']; ?></td>
<td><?= number_format($p['harga']); ?></td>
<td><?= $p['stok']; ?></td>
<td>
<a href="/produk/edit/<?= $p['id']; ?>">Edit</a> |
<a href="/produk/delete/<?= $p['id']; ?>" onclick="return confirm('Hapus produk ini?')">Hapus</a>
</td>
</tr>
<?php endforeach; ?>
</table>
📋 create.php
<h2>Tambah Produk</h2>
<form method="post" action="/produk/store">
<label>Kode</label><br>
<input type="text" name="kode_produk"><br>
<label>Nama</label><br>
<input type="text" name="nama_produk"><br>
<label>Harga</label><br>
<input type="number" name="harga"><br>
<label>Stok</label><br>
<input type="number" name="stok"><br>
<button type="submit">Simpan</button>
</form>
📥 edit.php
<h2>Edit Produk</h2>
<form method="post" action="/produk/update/<?= $produk['id']; ?>">
<label>Kode</label><br>
<input type="text" name="kode_produk" value="<?= $produk['kode_produk']; ?>"><br>
<label>Nama</label><br>
<input type="text" name="nama_produk" value="<?= $produk['nama_produk']; ?>"><br>
<label>Harga</label><br>
<input type="number" name="harga" value="<?= $produk['harga']; ?>"><br>
<label>Stok</label><br>
<input type="number" name="stok" value="<?= $produk['stok']; ?>"><br>
<button type="submit">Update</button>
</form>
Routing
Tambahkan route di file app/Config/Routes.php
:
$routes->get('/produk', 'Produk::index');
$routes->get('/produk/create', 'Produk::create');
$routes->post('/produk/store', 'Produk::store');
$routes->get('/produk/edit/(:num)', 'Produk::edit/$1');
$routes->post('/produk/update/(:num)', 'Produk::update/$1');
$routes->get('/produk/delete/(:num)', 'Produk::delete/$1');
Kesimpulan
Sekarang, kamu sudah berhasil membuat CRUD Produk di CodeIgniter 4. Langkah-langkah mulai dari pembuatan Model, Controller, hingga View sudah dijelaskan secara detail. Selanjutnya, kamu bisa mengembangkan fitur-fitur tambahan seperti validasi form dan pencarian data produk.
✅ Hasil Akhir
Dengan fitur ini:
- Admin dapat menambahkan produk baru ke sistem.
- Melihat semua daftar produk.
- Melakukan perubahan atau penghapusan data produk.
- Data produk akan terhubung langsung ke sistem transaksi (Part 4).
- Download Source code