3 Des 2013

Parser String Pada Template dengan Codeigniter

Apa itu parser ? saya sendiri kurang ngerti maksudnya hahaha.. tapi membuat sebuah shortcode untu... thumbnail 1 summary

Apa itu parser ? saya sendiri kurang ngerti maksudnya hahaha.. tapi membuat sebuah shortcode untuk digunakan pada sebuah file html.

Sebelumnya kita mengenal menjalankan/memberikan data sebuah view dengan menggunakan
$data['title']='Ini Title';
$this->load->view('namafile',$data)
Dengan view seperti ini
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?=$title;?></title>
</head>
<body>
<?=$title;?>
</body>
</html>
Lalu, dengan menggunakan parser library dari Codeigniter, dapat menggunakan kode di bawah ini :
$this->load->library('parser');
$data=array(
'title'=>'Ini sebuah Title',
'konten'=>'Ini konten',
);
        $this->parser->parse('tesparser',$data);
Dengan view seperti ini,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{title}</title>
</head>
<body>
{konten}
</body>
</html>
Seperti yang anda lihat, hanya dengan menggunakan {title} dan {konten} yang sudah diinisialkan pada sebuah controller. Lalu ada pertanyaan, kan sama aja dengan load->view . Opps, jangan salah. parser tersebut membuat fetch data dari database lebih mudah

Sekarang buatlah sebuah database, lalu koneksikan dengan menggunakan application/config/database.php
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'beritadb';
Misal, saya buat database beritadb dan tabel berita:
CREATE TABLE IF NOT EXISTS `berita` (
  `berita_id` int(20) NOT NULL AUTO_INCREMENT,
  `judul` varchar(40) NOT NULL,
  `isi` longtext NOT NULL,
  PRIMARY KEY (`berita_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Silahkan tambahkan sendiri datanya. 
Ok sekarang kita implementasi
Buat sebuah controller parser.php dan view tesparser.php
Berikut kode controller parser
<?php
class Parser extends CI_Controller
{
function index()
    {
$this->load->database();
$sql=$this->db->query('Select * from berita');
$this->load->library('parser');
$data=array(
'title'=>'Ini sebuah Title',
'isikonten'=>$sql->result(),
);
        $this->parser->parse('tesparser',$data);
    }

}

Lalu view tesparser-nya
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>{title}</title>
</head>
<body>
{isikonten}
<h2>{judul}</h2>
<p>{isi}</p>
{/isikonten}
</body>
</html>

Coba tes pada browser 

Coba anda lihat pada view tesparser.php
ada {isikonten} , {/isikonten} , {judul} dan {isi}

Intinya pada isikonten tersebut ada nama-nama field pada tabel berita tersebut. 
Keterangan :
{isikonten} = Memulai fetch data
{/isikonten} = Mengakhiri fetch data
{judul} {isi}= mengambil field pada tabel berita

Artikel ini bertujuan agar pengembangan templating nantinya lebih mudah

Download contoh source code