PHP Codeigniter – Memahami dasar dan pemanfaatan Controller
Salam…
Sebagian besar web developer sudah menyadari akan keuntungan dari fungsi yang tersedia oleh Framework Codeigniter (CI). Pada prakteknya untuk membangun suatu sistim, sebagian besar memerlukan suatu base core dan juga sub base core, dalam artian, kita sebisa mungkin dan secermat mungkin untuk meminimalisir dalam peng-kode-an kita dalam perulangan, biasa disebut re-use-able. Contoh nya bisa diterapkan dalam penggunaan level user atau tampilan yang bisa kita atur lebih dari satu, biasanya minimal kita punya dua Frontend dan Backend sub base core.
Untuk mengatasi hal tersebut, di dalam CI ternyata tidak tersedia secara out of the box, akan tetapi dapat kita terapkan, dan tetap tanpa harus memodifikasi core sistem dari Framework CI.
OK, langsung saja pada peng-kode-an nya.
1. Kita membuat file di folder application/core/MY_Controller.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class MY_Controller extends CI_Controller { public $data = array(); public function __construct() { parent::__construct(); //$this->output->enable_profiler(TRUE); // cek status login user if ($this->session->userdata('login') == FALSE) { redirect('login'); } else { $this->data['u_name'] = $this->session->userdata('u_name'); $this->data['level'] = $this->session->userdata('level'); $this->data['isi'] = ''; $this->data['judul_browser'] = ''; $this->data['judul_utama'] = ''; $this->data['judul_sub'] = ''; $this->data['link_aktif'] = ''; $this->data['css_files'] = array(); $this->data['js_files'] = array(); } } } |
Kode diatas adalah hanya contoh kasus, Anda dapat mengubahnya sesuai kebutuhan. Dalam kasus ini adalah dimana secara keseluruhan aplikasi akan di extends melalui MY_Controller, dalam artian sebelum mengakses ke controller harus melewati MY_Controller terlebih dahulu. Dengan begitu, maka kita dapat memanfaatkan setup default atau standar yang selalu digunakan dalam aplikasi yang akan kita bangun. Akan tetapi dalam kasus ini, kita ingin tidak hanya satu Default MY_Controller saja, melainkan dapat membuat sub MY_Controller, dalam artian aplikasi controller kita akan meng-extend Sub MY_Controller.
Kode diatas sudah mencukupi, jika kebutuhan aplikasi kita hanya memerlukan satu default.
OK, berikutnya kita akan membuat Sub dari MY_Controller, caranya adalah sbb.:
2. Membuat file didalam folder application/libraries/AdminController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class AdminController extends MY_Controller { public function __construct() { parent::__construct(); // cek status level admin if ($this->session->userdata('level') == 'admin') { // oke $this->data['akses'] = TRUE; } else { $this->data['akses'] = FALSE; $this->data['judul_browser'] = 'Tidak Ada Akses'; $this->data['judul_utama'] = 'Tidak Ada Akses'; $this->data['judul_sub'] = ''; $this->data['isi'] = '<div class="alert alert-danger">Anda tidak memiliki Akses.</div>'; $this->load->view('themes/layout_utama_v', $this->data); } } } |
Kode diatas adalah sub dari MY_Controller, yaitu AdminController, disini dapat kita atur default nya sesuai keperluan aplikasi. berikutnya kita akan coba langsung diterapkan dalam controller kita.
3. Buat file dalam folder application/controller/home.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Home extends AdminController { public function __construct() { parent::__construct(); //$this->output->enable_profiler(TRUE); } public function index() { $this->data['judul_browser'] = 'Beranda'; $this->data['judul_utama'] = 'Beranda'; $this->data['judul_sub'] = 'Dashboard'; $out = array(); $this->data['isi'] = $this->load->view('home_v', $out, TRUE); $this->load->view('themes/layout_utama_v', $this->data); //var_dump($this->data); //exit(); } } |
Kode diatas bukan meng-extend CI_Controller dan juga bukan extend MY_Controller, akan tetapi extend AdminController, disini kita dapat lebih leluasa untuk mengatur default, yang dapat kita ciptakan lebih dari satu default.
Untuk dapat menerapkan cara diatas, kita harus menambahkan script code dibawah ini.
4. Sisipkan code pada file di folder application/config/config.php
1 2 3 4 5 6 7 8 9 |
// untuk auto load folder library function __autoload($classname) { if (strpos($classname, 'CI_') !== 0) { $file = APPPATH . 'libraries/' . $classname . '.php'; if (file_exists($file) && is_file($file)) { @include_once($file); } } } |
Letakkan kode diatas pada baris ke-dua atau tiga.
Sekian, semoga bermanfaat.
siipppp……. GAN …
Share juga contoh buat CRUD byar tmbah ilmu gto
hehehe……..
ok gan GAN,… hehehe…. yang versi terbaru sekalian ya, Codeigniter 3.
Good toturial 🙂
Thanks Andre, wah ini master SPV Programmer mengomentari euy.. hehe 🙂
good tenks
Very good article, help me understand a lot about Codeigniter. Thank you!
nice blog