VIEWS (PHẦN 5)
View là một trang HTML trình bày giao diện như header, footer, sidebar... Bạn hiểu đơn giản, view chỉ là những file PHP chứa mã HTML định hình trang web (Có chèn code PHP để trình bày dữ liệu động). Thông thường, toàn bộ những gì bạn thấy trên trình duyệt thì đó được xem như là một view.
Về cơ bản, view không thể được gọi trực tiếp mà nó luôn được gọi thông qua controller theo đúng mô hình MVC mà ta thường biết tới.
Tạo file view cho controller blog ở phần 4 với nội dung như sau:
Code:
<html>
<head>
<title>My Blog</title>
</head>
<body>
Welcome to my Blog!
</body>
</html>
Tất cả file view của ứng dụng sẽ được lưu trữ trong thư mục application/views và tên file phải hoàn toàn là chữ thường. Như vậy, với file view ở trên, tôi sẽ lưu với tên là blog-view.php trong thư mục application/views.
View hoạt động được thông qua lệnh gọi từ controller. Để gọi view từ controller, bạn sử dụng cú pháp lệnh:
Code:
$this->load->view('Tên_view');
Tại phương thức index của controller blog, bạn chỉnh lại như sau:
PHP Code:
public function index()
{
$this->load->view('blog-view');
}
Khi bạn truy cập địa chỉ sau:
http://localhost/blog
Kết quả sẽ là:
Welcome to my Blog!
Bạn cũng có thể load nhiều view trong một phương thức của controller như ví dụ sau:
PHP Code:
public function index()
{
$this->load->view('header-view');
$this->load->view('blog-view');
$this->load->view('footer-view');
}
Trường hợp bạn tạo view bên trong thư mục con của thư mục application/views, bạn có thể sử dụng cú pháp lệnh sau để gọi view:
Code:
$this->load->view('Thư_mục_con/Tên_view');
ví dụ tôi đặt file blog-view.php ở trên trong thư mục application/views/blog, tôi sẽ điều chỉnh lại lệnh load view như sau:
PHP Code:
$this->load->view('blog/blog-view');
Toàn bộ quá trình xử lý tương tác dữ liệu đều được thực hiện ở controller (Trừ việc lấy dữ liệu từ DB là thực hiện ở model sẽ nói sau) nên kết quả trả về sẽ nằm trong controller. Vậy làm cách nào để truyền dữ liệu này ra ngoài view để có thể trình bày theo ý muốn? Với CodeIgniter thì công việc này rất đơn giản, các bạn chỉ việc gán toàn bộ các dữ liệu muốn truyền ra view vào một mãng và truyền vào tham số thứ hai của phương thức $this->load->view() như ví dụ dưới đây:
PHP Code:
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('blog-view', $data);
Với ví dụ trên, khi ra ngoài blog-view.php bạn sẽ có các biến $title, $heading và $message để sử dụng.
Xét ví dụ hoàn chỉnh sau:
Nội dung controller blog (File application/controllers/Blog.php) như sau:
PHP Code:
<?php
class Blog extends CI_Controller {
function index()
{
//Gán dữ liệu
$data***91;'title'***93; = 'Tiêu đề website';
$data***91;'messagge'***93; = 'Hello word!';
//Load view
$this->load->view('blog-view', $data);
}
}
Nội dung view blog (File application/views/blog-view.php) như sau:
PHP Code:
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<?php echo $messagge; ?>
</body>
</html>
Khi bạn truy cập địa chỉ sau:
http://localhost/blog
Kết quả sẽ là:
Hello word!
Lưu ý: Chuỗi "Tiêu đề" thì xuất hiện trên thanh tiêu đề của trình duyệt.
Khi dữ liệu được truyền từ controller ra view vẫn giữ nguyên kiểu dữ liệu. Ví dụ kiểu dữ liệu trong controller là chuỗi (String) thì ngoài view cũng sẽ là chuỗi. Tương tự, kiểu mãng (Array), kiểu đối tượng (Object)... khi truyền ra view vẫn giữ nguyên kiểu dữ liệu.
Các bạn tìm hiểu thêm về views tại địa chỉ http://www.codeigniter.com/user_guid...ral/views.html.
Bookmarks