Skip to main content

Membuat layout dengan codeigniter

December 27, 2008 by adi_de_la_rocha

adi_de_la_rocha's picture

Salam kenal semuanya...
saya baru belajar codeigniter. Saya ada pertanyaan mengenai membuat layout di codeigniter. Saya mau membuat halaman web yang setiap halaman nya muncul Header, navigational bar, footer yang sama ditambah dengan content yang berbeda beda. saya sudah membaca manual dan untuk menampilkan layout tersebut dengan menggunakan script :

$this->load->view('header'); // selalu tampil di setiap halaman
$this->load->view('navbar'); // selalu tampil di setiap halaman
$this->load->view('content');
$this->load->view('footer'); // selalu tampil di setiap halaman

Yang saya ingin tanyakan apakah setiap membuat halaman baru saya harus meng copy-paste script di atas (untuk menampilkan header, navbar, dan footer) ?? atau adakah cara yang lebih simpel??

Mohon pencerahannya, terima kasih

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

BLS:

June 28, 2009 by syabac, 2 years 5 weeks ago
Comment: 5555

syabac's picture

hum, cba jawab ah..hihi
controllernya gini...

class Page extends Controller{
       function Page(){
             parent::Controller();
       }
       function index(){
              $data['other']  = 'Just testing';
              $data['content_id']  = 'page_index';
              $this->load->view('template', $data);
       }
 
       function test(){
              $data['another']    = 'Another testing';
              $data['content_id']  = 'page_test';
              $this->load->view('template', $data);
       }
}

viewnya gini (template.php)..

<html>
<head><title>Test</title>
</head>
 
<body>
<?php $this->load->view('header')?>
 
<?php $this->load->view($content_id); 
//content berubah2 sesuai dengan nilai yang diberi di controller
?>
 
<?php $this->load->view('footer')?>
 
&lt;/body&gt;
&lt;/html&gt;

nah kira2 gitu yang biasa pake simplenya...tinggal di customize ja..

smoga membantu..

Membuat layout dengan codeigniter

June 7, 2009 by shadowz, 2 years 8 weeks ago
Comment: 5526

shadowz's picture

bs jg kyk gini bro.

di system/application/libraries/, buat file MY_Controller.php

isinya, kyk gini kira2.

class MY_Controller extends Controller {
 
          function MY_Controller()
         {
                  parent::Controller();
 
                  $this->load->library('...');    <-- load library yg sering dipake.
                  $this->load->helper('...');    <-- ...
         }
 
         function static_1()
         {
                 // Load static 1,  seperti header, dll..
         }
 
         function nav()
        {
               // Load navigation, dll.
        }
 
         function load_content()
         {
                // Load content utk pertama kali...
         }
 
        function static_2()
        {
             // Load static 2,  seperti footer, dll
        }
 
}

ntar di Controller yg di folder system/application/controllers/

bikin controllers, misalnya home.php
isinya kira2 ntar gini :

class Home extends MY_Controller {   // MY_Controller {
 
       function Home()
       {
               parent::MY_Controller   // Jgn lupa,  parentnya MY_Controller
       }
 
       function index()
      {
            $this->static_1()  // panggil static_1 yg ada di MY_Controller
 
            $this->nav();
 
            $this->load_content();
 
           $this->static_2();
      }
}

tapi ini nda pake template, tentunta banyak cara yg lbh baik dari cara tersebut diatas, tapi mudah2an yg diatas bs menghilangkan kebingungan yg baru menggunakan codeigntier yg mgkin bertanya2, apakah disetiap controller harus meload view ?. cara diatas cukup mudah. thx.

Weww.. aku lupa pake CI. Buat

June 6, 2009 by mul14, 2 years 8 weeks ago
Comment: 5524

mul14's picture

Weww.. aku lupa pake CI. Buat referensi aja yaa kalo pake Kohana gini:

class Home_Controller extends Template_Controller {
  public $template = 'template';                     // Load file views/template.php
 
  public function __construct() {
    parent::__construct();
    $this->template->header = new View('header');    // Load file views/header.php
    $this->template->nav    = new View('nav');       // Load file views/nav.php
    $this->template->footer = new View('footer');    // Load file views/footer.php
  }
 
  public function index() {
    $this->template->content = new View('homepage'); // Load file views/homepage.php
  }
 
  public function about() {
    $this->template->content = new View('about');    // Load file views/about.php
  }
}

Isi template.php

echo $header;
echo $nav;
echo $content;
echo $footer;

Akhirnya ketemu

December 30, 2008 by adi_de_la_rocha, 2 years 31 weeks ago
Comment: 191

adi_de_la_rocha's picture

Setelah saya cari di berbagai literatur, akhirnya saya menemukan cara untuk memakai layout reusable. pertama2 untuk bagian statis yang diambil dari database, modelnya di daftarkan ke dalam file autoload.php agar dapat langsung dipakai. misalnya saya akan membuat menu yang datanya diambil dari database tetapi akan selalu muncul di database. maka saya daftarkan model dari menu tersebut ke file autoload.php

$autoload['model'] = array('M_navbar');

kemudian saya membuat template master, sebagai contoh saya membuat file template.php dengan isi sebagai berikut :

 $this->load->view('v_header');

 $this->load->view('v_navbar');

 $this->load->view($content);

 

 $this->load->view('v_footer');

script diatas adalah untuk menampilkan halaman statis kecuali untuk content ($this->load->view($content);). kemudian untuk memanggil tampilan dengan konten yang dinamis, cukup dipanggil file template.php tersebut di controller dengan variabel $content yang dinamis

$this->load->view('template.php', $content);

barangkali penemuan saya berguna, atau ada yang punya ide yang lebih baik

Terima kasih

wah kayaknya bagus nih

January 18, 2011 by chatur, 28 weeks 2 days ago
Comment: 7547

chatur's picture

wah kayaknya bagus nih artikel, pas pertama saya baca kayaknya gampang, walaupun ada modif dikit,tampilannya jadi , tapi abis itu malah bingung, atau itu karena modif saya ya yang salah.
saya sederhanakan dulu kasusnya, jadi untuk menu navigator yang diambil dari database saya abaikan dulu , saya anggak menunya statis juga, kemudia saya buat untuk view header,navigasi,dan footer. Kemudian saya bikin satu View template.php (ini yg saya modif)

 $this->load->view('v_header');
 $this->load->view('v_navbar');
 #$this->load->view($content);
 echo $content;
 $this->load->view('v_footer'); 
 

kemudian saya buat class baru untuk mencoba in template

class template extends Controller {
  var $content;
  function cc(){
  $this->content='Ini adalah contentnya';
  $content['content'] = $this->content;
  $this->load->view('template.php',$content);
  }
}

yang saya tanyakan apakah yang dimaksud TS adalah seperti ini , atau gmn ya, masalhnya saya kesulitan dalam pengaplikasiannya

hahaha yes udah nemu sendiri

January 19, 2011 by chatur, 28 weeks 1 day ago
Comment: 7548

chatur's picture

hahaha yes udah nemu sendiri jawabannya ; ) seneng deh

ini controllernya

class template extends Controller {
 
   var $name;
   var $data = array();
   var $content;
 
  function cc(){
  $this->data['name'] = 'Chatur';
  $this->data['content'] = 'tampilan';
  $this->load->view('template',$this->data);
 
  }
}

ini view master templatenya

 $this->load->view('v_header');
 $this->load->view('v_navbar');
 $this->load->view($content);
 $this->load->view('v_footer'); 
 

contoh ngaksesnya kaya gini
http://localhost/codeigniter173/index.php/template/cc

jadi sepertinya aturannya gini deh $this->load->view('template.php',$this->data);
hanya melewatkan 2 parameter, yang pertama adalah view yang dituju, dan yang satu adalah melewatkan parameter variabel, nah di variable ini di buat array, biar bisa menampung banyak variable lagi.

kalo ada temen2 yang mau nambahin atau masukan , dengan senang hati sekali, Terimakasih sekali juga buat TS yang udah mulai Tread ini

masih blom jelas.......hehe

June 4, 2009 by Runner0, 2 years 8 weeks ago
Comment: 5521

Runner0's picture

masih blom jelas.......hehe maklum...newbie

Yang saya buat selama ini

December 30, 2008 by cahyono, 2 years 31 weeks ago
Comment: 189

cahyono's picture

Di semua aplikasi yg pernah saya buat saya bikin spt ini aja (soalnya lebih suka pakai type query string) :

di Controller:

class NameOfController extends Controller {
var $data = array();
 
function NameOfController() {
    parent::Controller();	
    //$this->output->enable_profiler(true);
 
   if(isset($_GET['m']) && $_GET['m'] != '') {
        $this->data['from'] = $_GET['m'];
    } else {
        $this->data['from'] = 'home';
    }
}
 
function profile() {
    $this->load->view('main_view', $this->data);
}
 
}

Isinya file main_view.php:

include "header.php";
include $from . ".php";
include "footer.php";

file header.php dan footer.php ditaruh di folder Views

Salam CI

sama saya juga....

December 28, 2008 by girista, 2 years 31 weeks ago
Comment: 182

girista's picture

saya juga kemaren punya pertanyaan seperti itu....
ada contoh yang bagus tuk masalah seperti itu....
namanya matchbox, tapi ni juga saya nemu awalnya karena make backendpro... (dapet dari forumnya CI)
sementara ini sih masih saya pelajari... (siapa tau mas nya lebih cepet, jadi bisa tukar informasi..) :P

wah sama nih gw jg mau tau

November 11, 2009 by modja, 1 year 38 weeks ago
Comment: 5708

modja's picture

wah sama nih gw jg mau tau dong yg cara terbaik dari cara2 diatas yg mana ya?

thx

Premium Drupal Themes by Adaptivethemes