20 Jun 2015

Route Dinamis Database Codeigniter

Ceritanya nih lagi stuck membuat route pada CMS . Misal segment nomor satu news atau page harus d... thumbnail 1 summary

Ceritanya nih lagi stuck membuat route pada CMS . Misal segment nomor satu news atau page harus dibikin satu-satu di route. Nah, ini ada dua, misal saja ada ratusan hehe.
$route['default_controller'] = 'welcome';
$route['satu'] = 'controller1/satu';
$route['dua'] = 'controller1/dua';
....
$route['seratus'] = 'controller1/seratus';

Timbul kasus baru, bagaimana bikin route dinamis melalui database?
Caranya cukup mudah, yuk kita bikin..

Langkah pertama adalah membuat database dulu dan table untuk menyimpan data route. Anggap nama databasenya abcd dan bikin table baru routetabel

CREATE TABLE IF NOT EXISTS `routetabel` (
  `route_id` int(2) NOT NULL AUTO_INCREMENT,
  `route_value` varchar(40) NOT NULL,
  `route_controller` varchar(40) NOT NULL,
  PRIMARY KEY (`route_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Langsung ini via phpmyadmin, klo mau ga ekstrim via CRUD boleh :D
Kita mesti tahu bagaimana format route :
$route['value'] ='controller'
$route['value/(:any)']='controller/one'
$route['value/(:num)']='controller/one'
$route['value/(:num)/(:any)']='controller/one'

pada route_value entri value route nya, contoh info/(:any) , pada route_controller isikan controller yang akan dieksekusi, contoh welcome/satu


Setelah mengentri tabel di atas, sekarang kita eksekusi di kode application/config/routes.php
(*) Jangan lupa set databasenya terlebih dahulu
Sekarang kita panggil route dari database tersebut dengan mengetikkan kode sebagai berikut :

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get('routetabel');
$result = $query->result();
foreach( $result as $row )
{
    $route[$row->isi]    = $row->kontroller;
}
Note : $route['default_controller'] dan $route['404_override'] ga pake database route nya

Sekarang bikin sebuah function satu pada welcome.php , lalu jalankan dengan mengetikkan url index.php/info/abcdefg

Gimana? sudah ada yang berhasil?