[WEB] CodeIgniter dengan Hierarchical Model View Controller dan Blade Bagian 2


Bagian ini membahas proses instalasi yaitu setup atau penyesuaian config agar dapat berjalan di host masing - masing. Framework HMVC ini mengambil dari alzen8work dan penulis gabungkan dengan Blade dari laperla, framework ini menggunakan base Code Igniter V. 3.1.10.

Framework yang penulis bagikan memiliki struktur seperti dibawah ini :

Struktur Application

* Klik atau buka gambar dihalaman baru untuk memperbesar.

Penjelasan singkat masing - masing bagian :

1. CORE
   Ini adalah bagian dari kelas inti dari HMVC yang dapat extends class dibawahnya sehingga bisa dimanfaatkan untuk berbagai hal. Untuk magic kelas core ini dibahas di artikel lain.

2. Models
   Bagian ini tentu berisi kelas untuk keperluan berhubungan dengan database. Models yang berada di folder terluar adalah global models yang dapat diakses semua modules, sehingga jika ada models yang kira - kira perlu diakses semua models maka taruh disini.

3. Modules
   Bagian ini letak module - module yang  bisa pembagiannya terserah pembuat, namun jika dibuat untuk projek kolaborasi maka perlu dibicarakan dulu dengan teman projek. Pada framework yang penulis buat ini terdapat 4 module yaitu start, user, admin, dan vip.

   Module start berfungsi sebagai halaman utama atau welcome juga berisi semua fungsi sebelum login, misalkan login, daftar dan lain - lain. Module lain adalah module untuk peruser, dalam framework ini adalah user, admin, dan vip.

4. Views
   Pada bagian ini berisi template dari tampilan yang akan dipakai pada bagian ini view masih dipisah lagi dengan main dan menu. Main ini sebagai holder atau wadah yang nantinya content dan item yang perlu digunakan di injek ke dalam main ini, sedangkan menu adalah bagian dari tampilan yang sesuai namanya adalah berisi menu - menu yang dapat digunakan. menu dipisah untuk mempermudah saat membuat multi user dengan menu yang berbeda - beda

  Jika diperhatian bagian main terpisah menjadi user dan admin yang mana artinya disini tampilan user dan admin berbeda, bisa dicek saat web sudah dijalankan. Kemudian pada main hanya ada user dan admin namun pada menu ada tambahan vip. Dimana tampilan vip? tampilan vip akan mengikuti admin namun memiliki menu sendiri, inilah kenapa menu perlu dipisahkan.

Setelah tau bagian - bagiannya sebelum web bisa dijalankan perlu sedikit pengaturan terlebih dahulu yaitu buka file Config/config.php 
$config['base_url'] = 'http://localhost/ci-hmvc-blade/';

  Sesuaikan base_url dengan nama folder web jika masih di htdocs atau domainnya jika sudah dihosting, hal ini perlu dilakukan karena adanya peraturan baru pada keamanan assets font yang gagal dimuat ketika base_url tidak diatur seperti ini. Jika sudah diatur cobalah untuk membuka semua module caranya lewat url dibawah ini tapi :

1. Module start disetting sebagai index jadi module ini bisa dipanggil hanya dengan alamat webnya saja.
localhost/alamatnya

2. Module user dipanggil melalui url dibawah.
localhost/user

3. Module admin dipanggil melalui url dibawah.
localhost/admin

4. Module vip dipanggil melalui url dibawah.
localhost/vip

  Tidak ada perbedaan berarti antara penggunaan CI tanpa dan dengan HMVC, bedanya hanyalah struktur foldernya saja. Aturan penting dari penggunaan HMVC adalah wajib hukumnya dalam 1 module ada 1 controller yang memiliki nama yang sama dengan modulenya dan bertindak sebagai index page, namun tidak haram hukumnya jika membuat function di dalamnya. 

  Perbedaan yang cukup banyak mungkin dibagian penggunaan Blade saja. Agar pembahasan tidak terlalu panjang, pembahasan menggunakan controller Admin karena sudah mewakili materi yang perlu disampaikan. Controller Admin bentuknya seperti dibawah ini.

<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Admin extends MY_Controller
{
 public function index()
 {
  $data['title'] = "Dasboard Admin";
  $data['type'] = 'admin';
  $this->blade->render('admin', $data);
 }
}

Cara menampilkan atau mengirim data ke view dari standar Code Igniter :
$this->load->view('admin', $data);

menjadi  seperti dibawah ini karena Blade :
$this->blade->render('admin', $data);

Menuju file views/admin.blade.php. Penamaan pada Blade wajib menggunakan akhiran .blade.php. Isi penting filenya simpelnya seperti dibawah ini :
@layout('template/main/admin/main')
@section('content')
<div class="row">
         <!-- lainnya skip karena kepanjangan -->
</div>
@endsection


Komentar