Memahami Konsep MVC Codeigniter

Sudah berhasil mengisntal Codeigniter 3?

Bagus..

Berikutnya, kita akan berkenalan lebih dekat dengan Codeigniter 3.

Mulai dari memahami struktur direktorinya, hingga mengenal konsep MVC yang ada di Codeigniter 3.

Mari kita mulai..

Mengenal Struktur Direktori Codeigniter

Jika kamu baru pertama kali belajar Codeigniter, maka wajib hukumnya mengetahui apa saja isi direktori dan file yang ada di dalam project codeigniter.

Silahkan buka teks Editor VS Code, lalu pilih File->Open Folder. Cari folder beritacoding.

Maka kita akan mendapatan struktur direktori seperti ini:

struktur-dir-ci

Tedapat dua direktori penting di dalam CI yang harus kamu perhatikan, yakni: 📁 application dan 📁 system.

Selain itu terdapat juga direktori 📁 user_guide dan beberapa file lainnya.

folder-ci

Berikut ini penjelasannya:

  1. 📁 application berisi semua kode aplikasi. Di dalam direktori inilah kita akan menulis semua kode aplikasi kita.
  2. 📁 system berisi kode-kode inti dari Codeigniter. Jangan mengubah apapun di dalam direktori ini. Jika kita ingin upgrade versi, kita cukup me-replace direktori ini dengan yang baru.
  3. 📁 tests berisi kode untuk melakukan testing.
  4. 📁 user_guide berisi dokumentasi codeigniter. Kita bisa menghapus direktori ini saat web sudah jadi.
  5. 📄 .editor_config berisi konfigurasi untuk teks editor.
  6. 📄 .gitignore berisi daftar file dan folder yang akan diabaikan oleh Git.
  7. 📄 comspoer.json adalah file yang berisi keterangan project dan keterangan library yang digunakan. File ini dibutuhkan oleh composer.
  8. 📖 contributing.md adalah file yang berisi penjelasan cara berkontribusi di proyek CI. Kita bisa menghapus file ini, apabila web sudah jadi.
  9. 📖 license.txt adalah file yang berisi keterangan lisensi dari CI. Kita juga bisa menghapus file saat web sudah jadi.
  10. 📖 readme.rst sama seperti file 📄 contributing.md file ini berisi penjelasan dan informasi tentang project CI. Kita juga bisa menghapus file ini saat web sudah selesai.
  11. 📄 index.php adalah file utama dari CI. File yang akan dibuka pertamakali saat aplikasi dibuka.

Selanjutnya silahkan buka direktori 📁 application dan perhatikan direktori yang ada di sana.

  • 📁 cache berisi cache dari aplikasi.
  • 📁 config berisi konfigurasi aplikasi.
    • 📄 autoload.php tempat kita mendefinisikan autoload;
    • 📄 config.php konfigurasi aplikasi;
    • 📄 constants.php berisi konstanta;
    • 📄 database.php konfigurasi database aplikasi;
    • 📄 doctypes.php berisi definisi untuk doctype HTML;
    • 📄 foreign_chars.php berisi karakter dan simbol;
    • 📄 hooks.php berisi konfigurasi hooks;
    • 📄 index.html untuk mencegah direct access;
    • 📄 memcached.php berisi konfigurasi untuk memcached;
    • 📄 migration.php konfigurasi untuk migrasi;
    • 📄 mimes.php berisi definisi tipe file;
    • 📄 profiler.php konfigurasi untuk profiler;
    • 📄 routers.php tempat kita menulis route aplikasi;
    • 📄 smileys.php berisi kode untuk emoji;
    • 📄 user_agents.php berisi definisi untuk user agents.
  • 📁 controller berisi kode untuk controller.
  • 📁 core berisi kode untuk custom core.
  • 📁 helpers berisi fungsi-fungsi helper.
  • 📁 hooks berisi kode untuk script hook.
  • 📁 language berisi string untuk bahasa, apabila web mendukung multibahasa.
  • 📁 libraries berisi library.
  • 📁 logs berisi logs dari aplikasi.
  • 📁 models berisi kode untuk model.
  • 📁 thrid_party berisi library dari pihak ketiga.
  • 📁 views berisi kode untuk view.
  • 📄 index.html file html untuk mencegah direct access.

Mengenal Konsep MVC pada Codeigniter

MVC (Model, View, Controller) adalah sebuah pola desain (design pattern) arsitektur pengembangan aplikasi yang memisahkan dan mengelompokan beberapa kode sesuai degan fungsinya.1

MVC membagi aplikasi ke dalam tiga bagian fungsional: model, view, dan controller.

  • Model adalah kode-kode untuk model bisnis dan data. biasanya berhubungan langsung dengan database untuk memanipulasi data (insert, update, delete, search), menangani validasi dari bagian controller, namun tidak dapat berhubungan langsung dengan bagian view.
  • View merupakan bagian yang menangani presentation logic. berisi kode-kode untuk tampilan.
  • Controller merupakan bagian yang mengatur hubungan antara bagian model dan bagian view, controller berfungsi untuk menerima request dan data dari user kemudian menentukan apa yang akan diproses oleh aplikasi.

MVC pada Codeigniter

Alur kerjanya seperti ini:2

  1. Mulai;
  2. User mengirim request ke web;
  3. File yang pertama kali dieksekusi adalah index.php;
  4. Lalu dari index.php, request akan diteruskan oleh routers.php;
  5. routers.php akan mencari cache di server, apabila tedapat cache maka cache itu yang akan dikirim sebagai balasan (response). Apabila tidak ada cache barulah request diteruskan ke Controller;
  6. Controller akan bertanggunag jawab untuk mengambil data dari Model dan me-rendernya ke dalam View dengan menggunakan library, plugin, dan helper yang ada.
  7. Hasil render (view) dikirim ke pengguna dan disimpan dalam cache, apabila fitur cache aktif;
  8. Selesai.

Flochart aplikasi Codeigniter

Memahami Router pada Codeigniter

Router pada Codeigniter bertugas untuk menentukan controller dan method/fungsi yang akan dieksekusi.

Ketika kita membuka, http://localhost/tokobuah/ maka fungsi yang akan dieksekusi adalah fungsi index() yang berada di dalam controller welcome.

class Welcome extends CI_Controller {
	public function index()
	{
		$this->load->view('welcome_message');
	}
}

Kenapa bisa begitu?

Ini karena konfigurasi router defaultnya adalah controller welcome.

Coba saja buka pada file 📄 config/routers.php.

Router default

Fungsi index() adalah fungsi yang akan dieksekusi saat kita mengakses controller welcome.

Sekarang coba buka: http://localhost/tokobuah/index.php/welcome/index, maka kita akan mendapatkan hal yang sama seperti membuka http://localhost/tokobuah/.

Route di dalam Codeigniter

Membuat Beberapa Router

Sebagai latihan, coba tambahkan route /about/ dan /contact/ di dalam Controller Welcome dengan method ini:

public function about()
{
	// fungsi untuk me-load view about.php
	$this->load->view('about');
}

public function contact()
{
	// fungsi untuk me-load view contact.php
	$this->load->view('contact');
}

Tambahkan di bawah method index().

Route about dan contact

Setelah itu tambahkan dua buah file view di dalam direktori 📁 views dengan isi sebagai berikut.

📄 views/about.php

<h1>About Us</h1>
<p>Ini adalah halaman about</p>

📄 views/contact.php

<h1>Contact Us</h1>
<p>Ini adalah halaman Contact</p>

File View untuk About dan Contact

Route sudah kita tambahkan.

Sekarang coba buka:

  • http://localhost/tokobuah/index.php/welcome/about/
  • dan http://localhost/tokobuah/index.php/welcome/contact/

Hasilnya:

Membuka route di browser

Apabila kita membuka http://localhost/tokobuah/index.php/contact, maka akan terjadi error 404 not found.

404 Route not found

Kenapa bisa begitu?

Ini karena route yang baru saja kita buat, belum didaftarkan ke dalam routers.php.

Sekarang buka file 📄 config/routers.php, lalu tambahkan kode berikut.

$route['about'] = 'welcome/about';
$route['contact'] = 'welcome/contact';

Tambahkan di bawah kode route yang sudah ada.

Menambahkan route

Hasilnya:

Halaman Contact

Apakah kita harus menambahkan route pada routers.php di setiap pembuatan route baru?

Jawabannya:

Tidak harus, karena CI juga mampu mendeteksi otomatis route berdasarkan nama controller dan method yang dibuat.3

Route di dalam Codeigniter

Ini formatnya:

http://example.com/[controller-class]/[controller-method]/[arguments]

Penambahan route pada 📄 routers.php dibutuhkan saat kita ingin membuat kustom route untuk controller tertentu.

Apa Selanjutnya?

Kita sudah belajar tentang MVC dan Route. Ini memang masih dasar. Selanjutnya nanti kita akan banyak menggunakannya.

Jadi, harap diphami betul dua hal ini.

Jika masih bingung, silahkan ditanyakan melalui komentar.

Berikutnya pelajari tentang:

Selamat belajar.


  1. Wikipedia. “MVC”. ↩︎

  2. Doc. Codeigniter. “Application Flow Chart”. ↩︎

  3. Doc. Codeigniter. “URI Routing”. ↩︎