Menerapkan HMVC pada CodeIgniter 3
HMVC adalah singkatan dari Hierarchical Model-View-Controller, merupakan pola arsitektur pemrograman pengembangan dari pola MVC dengan menambahkan hirarki pada komponen-komponennya. Pada HMVC komponen disusun secara modular, setiap modul dalam HMVC terdiri dari Model-View-Controller masing-masing. Dengan demikian aplikasi akan mudah dikembangkan dan dirawat.
Instalasi HMVC
Untuk instalasi HMVC silahkan ikuti langkah-langkah berikut:
1. Download extension HMVC halaman github berikut.
Download Codeigniter-Modular-Extensions-HMVC Wiredesignz
2. Setelah itu extract, isinya akan seperti gambar berikut.
3. Kemudian copy isi dari folder core dan third_party ke dalam project CodeIgniter kita ke dalam folder application, sehingga foldernya akan menjadi seperti berikut:
4. Selanjutnya buat folder bernama modules di dalam application, folder ini yang nantinya menjadi tempat untuk menyimpan semua modul yang akan kita buat.
Dalam contoh kali ini, dibuat dua modul bernama admin dan customer, di mana di dalamnya terdapat Model, View dan Controller masing-masing. Anda bisa menambahkan dengan dengan nama lain, begitu selanjutnya jika ditambahkan modul lagi.
5. Untuk mencoba hasil instalasi, silahkan akses modul admin dengan url: http://localhost/nama_project_anda/index.php/admin
Jika terjadi Error Setelah Instalasi HMVC
Jika terjadi error setelah Modular Extension di CodeIgniter sudah diinstal, muncul pesan error seperti ini:
Untuk memperbaiki Error di atas maka:
1. Buka application/third_party/MX/Loader.php
2. Cari function public function view($view, $vars = array(), $return = FALSE)
Cari… (Line 300)
return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
3. Ganti kode tersebut dengan:
if (method_exists($this, '_ci_object_to_array'))
{
return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
} else {
return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
}
Jalankan lagi programnya.
Mengatasi Error strpos() pada HMVC Codeigniter 3
Jika terdapat error dengan pesan:
Message: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior
Lakukan hal berikut:
- Buka file Application/third_party/MX/Router.php
- Kemudian di baris 239 terdapat blok kode seperti di bawah ini :
public function set_class($class)
{
$suffix = $this->config->item('controller_suffix');
if( strpos($class, $suffix) === FALSE ) //sebelum
{
$class .= $suffix;
}
parent::set_class($class);
}
3. Kemudian ubah baris kode diatas menjadi seperti dibawah ini :
public function set_class($class)
{
$suffix = $this->config->item('controller_suffix');
if( $suffix && strpos($class, $suffix) === FALSE) //sesudah
{
$class .= $suffix;
}
parent::set_class($class);
}