Thursday, September 7, 2017

Menggabungkan Smarty dengan Codeigniter

Smarty adalah mesin template untuk PHP yang memisahkan coding PHP dan desain HTML-nya, jadi kode PHP bisa dikerjakan oleh programmer PHP dan desain HTML oleh desainer HTML, biasanya orang yang berbeda, sehingga proyek website bisa lebih cepat diselesaikan.
Nah, kali ini saya mau sedikit menjelaskan langkah-langkah menerapkan Smarty di framework Codeigniter sebagai berikut :
  1. Setelah Codeigniter terpasang, buatlah folder dengan nama Smarty di folder system/libraries/
  2. Download Smarty dan ekstrak di system/libraries/Smarty/ yang tadi dibuat.
  3. Buatlah file dengan nama Smarty.php dan simpan di system/libraries/ , kemudian edit file tersebut dan simpan kode berikut, lalu save filenya 
    <?php
    if (!defined('BASEPATH')) exit('No direct script access allowed');
    require_once( BASEPATH.'libraries/Smarty/libs/Smarty.class.php' );
    class CI_Smarty extends Smarty {
    public function __construct()
        {
            parent::__construct();
            $this->compile_dir = APPPATH . "views/templates_c";
            $this->template_dir = APPPATH . "views/templates";
            $this->assign( 'APPPATH', APPPATH );
            $this->assign( 'BASEPATH', BASEPATH );
            // Assign CodeIgniter object by reference to CI
            if ( method_exists( $this, 'assignByRef') )
            {
                $ci =& get_instance();
                $this->assignByRef("ci", $ci);
            }
            log_message('debug', "Smarty Class Initialized");
        }
    function view($template, $data = array(), $return = FALSE)
        {
            foreach ($data as $key => $val)
            {
                $this->assign($key, $val);
            }
          
            if ($return == FALSE)
            {
                $CI =& get_instance();
                if (method_exists( $CI->output, 'set_output' ))
                {
                    $CI->output->set_output( $this->fetch($template) );
                }
                else
                {
                    $CI->output->final_output = $this->fetch($template);
                }
                return;
            }
            else
            {
                return $this->fetch($template);
            }
        }
    }
  4. Kemudian buatlah dua folder dengan nama templates dan templates_c di folder application/views/ 
  5. Buatlah file template misalnya test.tpl dan simpan di folder application/views/templates/ isi file tersebut <html><head></head><body>{$title}</body></html>
  6. Lakukan test di controller Anda dengan kode kurang lebih seperti berikut :
public function index() 

{ 

$data['title'] = 'hello world';

$this->smarty->view('test.tpl',$data);

}

 Selesai, semoga sukses selalu !