Skip to content
Derek Jones edited this page Jul 5, 2012 · 29 revisions

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, $loadedData, true);
            return $output;
        }
        else
        {
            $this->obj->load->view($this->layout, $loadedData, false);
        }
    }
}
?> 

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.phpphp $autoload['libraries'] = array('layout'); After you do either of the above, and the library is loaded, in your controller you may do this: ```php $this->layout->view('/shop/view_cart', $data);

[h4]Master layout[/h2]
**/application/views/layout_main.php**
Your view file must use $content_for_layout. For example:```php
<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">
      &lt;?php echo $content_for_layout?&gt;
    </div>
  </div>
  <div id="footer" > Footer </div>
</div>
&lt;/body&gt;
&lt;/html&gt;
Clone this wiki locally