View hiểu đơn giản là một web page (trộn html và PHP) hoặc đôi khi là một phần của page (ví dụ header, footer). View cũng có thể được nhúng trong một view khác.
View không bao giờ được gọi trực tiếp. Chúng được gọi từ controller. Ta cùng thử ví dụ sau để hiểu rõ hơn:
Creating a View
Trong application/views tạo file blog-view.php:
<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>Welcome to my Blog!</h1>
</body>
</html>
Gọi view này trong controller như thế nào?
Ta sử dụng câu lệnh sau: $this->load->view('blog-view');
Hãy thử xem!
Loading multi views
Để load được cùng lúc nhiều view trong controller, ta chỉ đơn giản là lặp lại câu lệnh trên. Xem lại ví dụ ở Bài 3.
Tương tự như controller, view cũng có thể tổ chức trong các thư mục con và tất nhiên lúc load từ controller, ta cũng phải thêm tên thư mục con vào trước tên view, ví dụ: $this->load->view('my-view/blog-view');
Truyền data vào view
Để truyền data vào view ta sử dụng một biến mảng $data. Xem lại ví dụ của Bài 3, Bài 5 để hiểu rõ hơn. Ở đây tôi xin phép không đưa ra ví dụ nữa.
Vòng lặp trong view
Để tạo vòng lặp trong view ta chỉ cần nhúng mã vòng lặp PHP vào, ví dụ:
<ul>
<?php foreach ($todo_list as $item):?>
<li><?php echo $item;?></li>
<?php endforeach;?>
</ul>
Đơn giản phải không các bạn!
CodeIgniter cung cấp một số cú pháp thay thế đơn giản và sáng sủa hơn cho việc nhúng mã PHP vào View. Các bạn có thể tham khảo User guide nha.
Trả về giá trị của view
Có một tham số tùy chọn trong câu lệnh load->view() cho phép bạn trả về một data thay vì render ra trình duyệt. Quan sát ví dụ:
$string = $this->load->view('myfile', '', TRUE);
Tham số tùy chọn thứ 2 mặc định là FALSE, nghĩa là nó sẽ render dữ liệu ra trình duyệt. Nếu bạn đặt thành TRUE, nó sẽ trả về một data và không render ra trình duyệt. Điều này đôi khi tiện lợi nếu bạn muốn xử lý dữ liệu đó.
That’s all for this lesson!