CodeIgniter – Bài 4: Tạo Master Layout – Hướng dẫn CodeIgniter

Cấu trúc một view thì sẽ cần Header Content và Footer. Chẳng lẽ view nào bạn cũng đặt Header và Footer quá mất thời gian. Master Layout này sẽ giải quyết vấn đề trên.

Hướng dẫn CodeIgniter  – Như đã mô tả ở trên lợi thế của việc tạo Master Layout sẽ giúp chúng ta không phải viết lại Header và Footer quá nhiều lần. Trong view bạn chỉ việc viết cho phần Content mà thôi.

#1 Tạo file Layout

Trong View \application\views\ tạo Folder có tên Layout

\application\views\Layout

Tạo 1 file _MainLayout.php với nội dung

<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">
 <?=$content_for_layout?>
 </div>
 </div>
 <div id="footer" > Footer </div>
</div>
</body>
</html>

Đoạn code trên có gì đặc biệt?

Đó chính là dòng: <?=$content_for_layout?> nội dung của view sẽ được fill vào đây.

#2 Tạo Library để sử dụng Layout

Trong folder \application\libraries tạo 1 file có tên Layout.php. Cái này chính là class thư viện Layout mà sau này chúng ta sẽ dùng.

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

class Layout
{

    var $obj;
    var $layout;

    function Layout($layout = "Layout/_MainLayout")
    {
        $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);
        }
    }
}

Các bạn đọc hiểu chứ?? :D. Nếu không hiểu thì comment nha. Mình định giải thích mà thôi cứ để các bạn đọc hiểu sẽ nhớ lâu hơn

#3: Register Library

Library là gì? Mục đích của việc register library là gì? 

TL: Kiểu dạng như 1 hàm common viết 1 lần và dùng ở nhiều nơi vậy đó. 🙂

Có bao nhiêu cách để Register Library?

TL: Có 2 cách

+ Register ở Controller (Chỉ sử dụng được ơ Controller register)

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

+ Register ở AutoLoad (Sử dụng được cho toàn Application)

Mở file \application\config\autoload.php lên

Tìm đến dòng

$autoload['libraries'] = array('');

Sửa thành

$autoload['libraries'] = array('layout');

Layout chính là tên Library của bạn vừa tạo

#4 Sử dụng Library Master Layout

Trong controller

function index()
{
    $data['variable1'] = 'first var';
    $this->layout->view("/Home/index",$data);
}

Chạy thử chương trình và xem kết quả 🙂

F G+ T

tuandph

Khởi đầu với .NET từ năm 2013 đến nay. Hiện tại mình đang làm full-stack developer. Yêu thích lập trình & chia sẽ kiến thức. Thời gian rảnh thường làm những tool vui vui và viết lách kể lệ sự đời.

Leave a Reply

We're glad you have chosen to leave a comment. Your email address is required but will not be published.
  • Không nói tục
  • Không chửi bậy
  • Comment ko hài hước không support