Part of the EllisLab Network
x
 
Create New Page
 View Previous Changes    ( Last updated by adaykin )

layout library

Category:Library -> View | Category:Library -> Community

Introduction

This is a cake-like layout/view system…

Source

/application/libraries/Layout.php

<?php  
if (!defined('BASEPATH')) exit('No direct script access allowed');

class 
Layout
{
    
    
var $obj;
    var 
$layout;
    
    function 
Layout($layout "layout_main")
    
{
        $this
->obj =& get_instance();
        
$this->layout $layout;
    
}

    
function setLayout($layout)
    
{
      $this
->layout $layout;
    
}
    
    
function view($view$data=null$return=false)
    
{
        $loadedData 
= array();
        
$loadedData['content_for_layout'$this->obj->load->view($view,$data,true);
        
        if(
$return)
        
{
            $output 
$this->obj->load->view($this->layout$loadedDatatrue);
            return 
$output;
        
}
        
else
        
{
            $this
->obj->load->view($this->layout$loadedDatafalse);
        
}
    }
}
?> 

Usage

Loading the library

You can use it in two ways. First and obvious is to place the following line in the controller’s constructor function.

$this->load->library('layout''layout_main'); 

The second is by enabling codeIgniter to autoload the library by editing /application/config/autoload.php

$autoload['libraries'= array('layout'); 
After you do either of the above, and the library is loaded, in your controller you may do this:
$this->layout->view('/shop/view_cart'$data); 

Master layout

/application/views/layout_main.php
Your view file must use $content_for_layout. For example:

<html>
<
head>
<
title><?=$title_for_layout?></title>
<
meta http-equiv="content-type" content="text/html;charset=utf-8" />
<
link rel="stylesheet" href="/css/main.css" type="text/css" />
</
head>
<
body>
<
div id="pagewidth" >
  <
div id="header" ><img src="/images/header.jpg" width="700" height="200"></div>
  <
div id="wrapper" class="clearfix" >
    <
div id="twocols" class="clearfix">
      
<?php echo $content_for_layout?>
    
</div>
  </
div>
  <
div id="footer" Footer </div>
</
div>
</
body>
</
html

Categories: