MEMBUAT TEMPLATE DI CODEIGNITER

templating in codeigniteLangkah-kangkah berikut akan memandu anda untuk menciptakan sebuah library template yang :

  • Membuat struktur direktori yang mudah di jaga dan dikenali untuk 'view' anda.
  • Memungkinkan untuk memakai beberapa template yang berbeda.
  • Menyingkat tampilan halaman hanya dengan satu baris kode.
Setelah library terbentuk, kita akan dapat menampilkan halaman template dengan kode seperti :
$ This -> Template-> load ( 'TEMPLATE_NAME' , 'body_view' );
Jauh lebih baik bukan!!!



Step 1 : Menyiapkan Direktori

Buat folder baru di dalam application/views bernama template. Folder ini yang akan kita isi dengan view template (header, footer).



Step 2 : Membuat Library

Libary dalam codeigniter hanyalah seperti kelas-kelas di PHP yang bisa di load ke controllers layaknya views.
$ This -> load-> library ( 'nama_kelas' )
Membuat file template.php di dalam folder application/libraries dan kopikan kode dibawah ini :
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
   class Template 
   {
      var $ci;
       
      function __construct() 
      {
         $this->ci =& get_instance();
      }
   function load($tpl_view, $body_view = null, $data = null) 
{
   if ( ! is_null( $body_view ) ) 
   {
      if ( file_exists( APPPATH.'views/'.$tpl_view.'/'.$body_view ) ) 
      {
         $body_view_path = $tpl_view.'/'.$body_view;
      }
      else if ( file_exists( APPPATH.'views/'.$tpl_view.'/'.$body_view.'.php' ) ) 
      {
         $body_view_path = $tpl_view.'/'.$body_view.'.php';
      }
      else if ( file_exists( APPPATH.'views/'.$body_view ) ) 
      {
         $body_view_path = $body_view;
      }
      else if ( file_exists( APPPATH.'views/'.$body_view.'.php' ) ) 
      {
         $body_view_path = $body_view.'.php';
      }
      else
      {
         show_error('Unable to load the requested file: ' . $tpl_name.'/'.$view_name.'.php');
      }
       
      $body = $this->ci->load->view($body_view_path, $data, TRUE);
       
      if ( is_null($data) ) 
      {
         $data = array('body' => $body);
      }
      else if ( is_array($data) )
      {
         $data['body'] = $body;
      }
      else if ( is_object($data) )
      {
         $data->body = $body;
      }
   }
    
   $this->ci->load->view('templates/'.$tpl_view, $data);
}
   }

Menggunakan Library
Untuk memulai menggunkan library kita, kita buat view template dulu dengan nama default.php di application/views/templates,dan letakkan html/php dibawah :
<!DOCTYPE html>
<html>
 
   <head>
      <title><?php echo $title; ?></title>
   </head>
 
   <body>
    
      <h1>Default template</h1>
       
      <div class="wrapper">
          
         <?php echo $body; ?>
          
      </div>
       
   </body>
    
</html>
Dalam template ini, kita melewatkan dua variabel  $title dan $body.
Kita buat lagi sebuah file bernama konten.php di  application/views/ dan letakkan kode simpel HTML dibawah :
<p>
   Hello world!
</p>
Sekarang kita siap untuk me-load halaman view dalam controllers.
Didalam sembarang method controller, letakkan code dibawah untuk menampilkan konten view dalam default template.
$data = array(
 
   'title' => 'Title goes here',
    
);
 
$this->load->library('template');
$this->template->load('default', 'content', $data);

Note: library harus di load sebelum sobat bisa menggunakan method-method yang ada didalam library. Untuk me-load library secara otomatis, sobat bisa menambahkan array di library application/config/autoload.php. 
Jika sobat ingin menambahkan string di view melalui template, sobat tinggal menambahkan $data array menggunakan kunci body dan lewatkan null pada parameter kedua saat pemanggilan load.

$data = array(
 
   'title' => 'Title goes here',
   'body'   => 'The string to be embedded here!'
    
);
 
$this->template->load('default', null, $data);


Silakan kasih komentar ya!!

3 comments:

  1. $data = array(

    'title' => 'Title goes here',

    );

    $this->load->library('template');
    $this->template->load('default', 'content', $data);
    dan
    $data = array(

    'title' => 'Title goes here',
    'body' => 'The string to be embedded here!'

    );

    $this->template->load('default', null, $data);

    script diatas ditempatkan dimana?

    ReplyDelete
  2. makasih mas saya banyak belajar dari tutorial mas, semoga lancar jaya rezekinya atas ketulusannya berbagi source code

    ReplyDelete