Panduan Membuat Template Di Codeigniter

Langkah-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 :

1
$ 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.

1
$ This -> load-> library ( 'nama_kelas' )
Membuat file template.php di dalam folder application/libraries dan kopikan kode dibawah ini :

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?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 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!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 :

1
2
3
<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.

1
2
3
4
5
6
7
8
$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.

1
2
3
4
5
6
7
8
$data = array(
  
   'title' => 'Title goes here',
   'body'   => 'The string to be embedded here!'
     
);
  
$this->template->load('default', null, $data);


0 comments:

Post a Comment

Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]
close
iklan 120 x 600 kanan
close