Blog

Chắn hẳn khi thiết kế website với MVC chúng ta đã nắm được về Views, Views là 1 trong 3 phần tạo nên mô hình MVC có chức năng hiển thị thông tin cho người dùng, nó chỉ đơn giản là 1 trang web hoặc 1 phần của trang web như: header, footer, sidebar,…

Load View trong Codeigniter

Load View trong Codeigniter

Trong CodeIgniter bạn không thể gọi Views trực tiếp mà phải gọi thông qua Controller, nếu bạn chưa xem bài Controller trong Codeigniter thì hãy xem nó trước khi tiếp tục với Views trong CodeIgniter nhé! Hãy nhớ rằng trong các mô hình MVC thì Controller đóng vai trò như 1 người cảnh sát giao thông nó có trách nhiệm xử lý và điều hướng người dùng.

Tạo View

Để tạo view bạn tạo 1 file giao diện với tên bất kỳ sau đó đặt vào application/views. Ví dụ bài này Công ty thiết kế website OTVINA sẽ tạo 1 file home.php với nội dung:

<!DOCTYPE html>
<html>
<head>
<title>View trong Codeigniter</title>
</head>
<body>
<p>Xin chào!</p>
</body>
</html>

 Load view như thế nào?

Như tôi đã nói ở phần đầu, bạn không thể truy cập trực tiếp vào 1 view, mà chúng ta phải gọi thông qua controller, vì vậy khi load view ra bạn chỉ việc đặt nội dung bên dưới vào controller muốn gọi ra.

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

Trường hợp bên trên để load view ra chúng ta làm như sau: $this->load->view(‘home’);

Bây giờ chúng ta sẽ gọi view từ controller

<?php
if(!defined('BASEPATH') ) exit('Can't access');
class Hello extends CI_Controller{
public function index(){
$this->load->view('home');
}
}
?>

Trong trường hợp nếu bạn muốn thay đổi thư mục chứa views, ví dụ không muốn đặt trực tiếp trong folder views, mà bạn đặt vào trong 1 thư mục như admin hoặc themes,… thì chúng ta thêm tên folder khi gọi view:

$this->load->view('admin/home');

Truyền dữ liệu qua View

Khi controller của bạn có biến cần đẩy qua để hiển thị qua View bạn tạo 1 biến mảng rồi truyền ngay vào lúc load view ra:

<?php
if(!defined('BASEPATH') ) exit('Can't access');
class Hello extends CI_Controller{
public function index(){
$data['title']="Tiêu đề trang";
$this->load->view('home',$data);
}
}
?>

Lưu ý: Ở đây khi tạo chúng ta sẽ sử dụng biến mảng và trong view khi hiển thị biến ra chúng ta chỉ sử dụng tên khóa của mảng làm biến mới:

<!DOCTYPE html>
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<p>Xin chào!</p>
</body>
</html>

Gọi view trong view

Khi thiết kế website chắc chắn bạn đã gặp trường hợp lặp lại 1 số phần của giao diện website như: header,footer, sidebar,… vì vậy không thể view nào chúng ta cũng đặt code header,footer,… vào đó mà thông thường chúng ta sẽ tạo 1 file riêng rồi gọi chúng. Vậy trong Codeigniter phải làm như thế nào?

Bước 1. Chuyển các phần lặp lại qua 1 file mới

Ở đây tôi sẽ ví dụ chuyển header qua 1 file mới, tôi sẽ tạo 1 file header.php ngay trong thư mục application/views dùng để chứa phần đầu của website:

<!DOCTYPE html>
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>

Bước 2. Gọi header trong 1 view

Tương tự như gọi trong controller để gọi view trong view chúng ta vẫn sử dụng lại $this->load->view(‘tenview’);

<?php
$this->load->view('header');
?>
<p>Xin chào!</p>
</body>
</html>

Vậy là đã xong chúng ta đã có thể sử dụng view trong 1 view khác. Nội dung bài số 5 về View trong CodeIgniter của chúng ta hôm nay là đã tạm ổn, bài sau chúng ta sẽ tiếp tục tìm hiểu thêm các vấn đề khác trong Codeigniter, hẹn gặp các bạn ở bài sau! <3