Setelah memahami Controller, View, Model, CRUD, dan Validasi, saatnya fokus pada tampilan aplikasi.
Tanpa template dan layout yang rapi, aplikasi akan terlihat tidak profesional. Dengan memanfaatkan header, footer, dan layout dinamis, Anda bisa membuat tampilan yang konsisten, modern, dan mudah diubah.
Pada BAB ini, kita akan membahas:
- Header dan footer
- Template layout
- Load view berulang
- Integrasi Bootstrap
- Struktur halaman dinamis
Contents
Tujuan Pembelajaran
Setelah menyelesaikan BAB 10, Anda akan mampu:
- Membuat header dan footer konsisten di semua halaman
- Mengatur template layout agar view mudah dipanggil berulang
- Mengintegrasikan Bootstrap untuk tampilan modern
- Membuat halaman dinamis dengan struktur rapi
Header dan footer adalah bagian atas dan bawah halaman yang sama di seluruh halaman.
Contoh CI 3 / CI 4
Header (header.php)
<!DOCTYPE html>
<html>
<head>
<title>My CodeIgniter App</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="<?= base_url('/') ?>">CI App</a>
</nav>
<div class="container mt-3">
Footer (footer.php)
</div> <!-- end container -->
<footer class="bg-dark text-white text-center p-3 mt-3">
© <?= date('Y') ?> My CodeIgniter App
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
📌 Tips:
- Pisahkan header dan footer agar mudah diubah di seluruh halaman
- Gunakan CDN Bootstrap agar cepat dan ringan
10.2 Template Layout
Template layout adalah kerangka halaman yang memanggil header, content, dan footer.
Controller Example
class Home extends CI_Controller {
public function index() {
$data['title'] = "Beranda";
$data['content'] = "home_view";
$this->load->view('template', $data);
}
}
Template View (template.php)
<?php $this->load->view('header'); ?>
<?php $this->load->view($content); ?>
<?php $this->load->view('footer'); ?>
📌 Kelebihan:
- Semua halaman menggunakan satu layout
- Tidak perlu menulis header/footer di tiap view
10.3 Load View Berulang
Dengan template, kita bisa memanggil view berulang:
- Sidebar
- Navbar
- Notifikasi / flash messages
sidebar.php:
<div class="list-group">
<a href="<?= base_url('home') ?>" class="list-group-item">Home</a>
<a href="<?= base_url('mahasiswa') ?>" class="list-group-item">Mahasiswa</a>
<a href="<?= base_url('produk') ?>" class="list-group-item">Produk</a>
</div>
Panggil di template:
<div class="row">
<div class="col-3">
<?php $this->load->view('sidebar'); ?>
</div>
<div class="col-9">
<?php $this->load->view($content); ?>
</div>
</div>
10.4 Integrasi Bootstrap
Bootstrap membantu desain responsif dan modern tanpa menulis banyak CSS.
Contoh Table Responsif
<table class="table table-striped table-bordered">
<thead class="table-dark">
<tr>
<th>No</th>
<th>Nama</th>
<th>NIM</th>
<th>Jurusan</th>
<th>Aksi</th>
</tr>
</thead>
<tbody>
<?php $no=1; foreach($mahasiswa as $m): ?>
<tr>
<td><?= $no++ ?></td>
<td><?= $m->nama ?></td>
<td><?= $m->nim ?></td>
<td><?= $m->jurusan ?></td>
<td>
<a href="<?= base_url('mahasiswa/edit/'.$m->id) ?>" class="btn btn-warning btn-sm">Edit</a>
<a href="<?= base_url('mahasiswa/hapus/'.$m->id) ?>" class="btn btn-danger btn-sm" onclick="return confirm('Yakin?')">Hapus</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
10.5 Struktur Halaman Dinamis
Dengan template dan layout, setiap halaman cukup:
- Menentukan
content→ view spesifik - Memanggil
template.php - Header, footer, dan layout tetap konsisten
Contoh Controller Dinamis
class Page extends CI_Controller {
public function show($page) {
$data['content'] = $page.'_view';
$this->load->view('template', $data);
}
}
Keuntungan:
- Halaman baru tinggal buat view saja
- Template dan layout tetap konsisten
- Mudah integrasi Bootstrap / library lain
Penutup
Dengan BAB 10 ini, aplikasi CodeIgniter Anda sudah memiliki:
- Template header/footer konsisten
- Layout yang rapi dan dinamis
- Tampilan modern dengan Bootstrap
- Struktur view berulang yang efisien
Langkah berikutnya bisa fokus ke fitur lanjutan, seperti pagination, upload file, atau autentikasi user, agar aplikasi semakin profesional.