Trong CodeIgniter 3, View là thành phần trong mô hình MVC (Model-View-Controller) chịu trách nhiệm hiển thị dữ liệu cho người dùng. Views không chứa logic xử lý dữ liệu mà chỉ sử dụng dữ liệu do Controller truyền tới để hiển thị nội dung.

Dưới đây là hướng dẫn chi tiết về cách tạo và sử dụng View trong CodeIgniter 3:

1. Tạo View Mới

  1. Tạo file View:
    • Views được đặt trong thư mục application/views.
    • Tạo một file PHP mới trong thư mục này với tên file kết thúc bằng .php. Ví dụ: welcome_message.php.
  2. Nội dung của View:
    • File View có thể chứa HTML, CSS, JavaScript và mã PHP để hiển thị dữ liệu.

Ví dụ về một View cơ bản:

Tạo file welcome_message.php trong application/views:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Chào mừng đến với CodeIgniter!</title>
</head>
<body>
    <h1>Chào mừng đến với CodeIgniter!</h1>
    <p>Đây là ví dụ về View trong CodeIgniter 3.</p>
</body>
</html>

2. Nạp View trong Controller

Để hiển thị một View, bạn cần nạp View đó trong Controller bằng phương thức $this->load->view().

Ví dụ về Controller nạp View:

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

class Welcome extends CI_Controller {

    public function index() {
        // Nạp View 'welcome_message'
        $this->load->view('welcome_message');
    }
}

3. Truyền Dữ liệu từ Controller sang View

Controller có thể truyền dữ liệu đến View thông qua mảng dữ liệu. Dữ liệu này được sử dụng trong View để hiển thị nội dung động.

Ví dụ:

Trong Controller Blog.php:

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

class Blog extends CI_Controller {

    public function index() {
        // Tạo dữ liệu để truyền sang View
        $data['title'] = 'Blog của tôi';
        $data['message'] = 'Chào mừng đến với blog của tôi!';

        // Nạp View 'blog_view' và truyền dữ liệu tới View
        $this->load->view('blog_view', $data);
    }
}

Trong View blog_view.php:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title><?php echo $title; ?></title>
</head>
<body>
    <h1><?php echo $title; ?></h1>
    <p><?php echo $message; ?></p>
</body>
</html>

4. Sử dụng Vòng lặp và Cấu trúc Điều kiện trong View

Views có thể sử dụng mã PHP để hiển thị nội dung động thông qua vòng lặp và cấu trúc điều kiện.

Ví dụ:

Trong Controller:

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

class Blog extends CI_Controller {

    public function index() {
        $data['posts'] = [
            ['title' => 'Bài viết 1', 'content' => 'Nội dung bài viết 1'],
            ['title' => 'Bài viết 2', 'content' => 'Nội dung bài viết 2'],
            ['title' => 'Bài viết 3', 'content' => 'Nội dung bài viết 3'],
        ];

        $this->load->view('blog_view', $data);
    }
}

Trong View blog_view.php:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Danh sách bài viết</title>
</head>
<body>
    <h1>Danh sách bài viết</h1>

    <?php if (!empty($posts)): ?>
        <ul>
            <?php foreach ($posts as $post): ?>
                <li>
                    <h2><?php echo $post['title']; ?></h2>
                    <p><?php echo $post['content']; ?></p>
                </li>
            <?php endforeach; ?>
        </ul>
    <?php else: ?>
        <p>Không có bài viết nào.</p>
    <?php endif; ?>
</body>
</html>

5. Tái Sử Dụng View với View Phụ (Partial Views)

Partial Views là những đoạn View nhỏ, có thể tái sử dụng trong nhiều View khác. Điều này giúp giảm thiểu việc lặp lại mã và làm cho mã nguồn gọn gàng hơn.

Ví dụ:

Tạo file header.php trong application/views:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title><?php echo isset($title) ? $title : 'Trang web của tôi'; ?></title>
</head>
<body>
    <header>
        <h1>Đây là tiêu đề của trang</h1>
    </header>

Tạo file footer.php trong application/views:

    <footer>
        <p>Đây là footer của trang.</p>
    </footer>
</body>
</html>

Trong View chính main_view.php:

<?php $this->load->view('header'); ?>

<div>
    <h2>Nội dung chính của trang</h2>
    <p>Đây là nội dung của trang chính.</p>
</div>

<?php $this->load->view('footer'); ?>

6. Truyền Dữ liệu Giữa Các View Phụ

Khi bạn nạp một View phụ, bạn có thể truyền dữ liệu đến nó tương tự như cách truyền dữ liệu đến View chính.

Ví dụ:

Trong Controller:

public function index() {
    $data['title'] = 'Trang chính';
    $this->load->view('main_view', $data);
}

Trong main_view.php, truyền dữ liệu sang View phụ:

<?php $this->load->view('header', $data); ?>

7. Sử dụng Buffers trong View

CodeIgniter cho phép bạn sử dụng output buffers để quản lý nội dung được nạp vào trình duyệt.

Ví dụ:

$this->output->set_output($this->load->view('your_view', $data, TRUE));

8. Bảo mật Dữ liệu trong View

Khi hiển thị dữ liệu, luôn đảm bảo rằng dữ liệu được thoát (escaped) để tránh các cuộc tấn công XSS (Cross-site Scripting).

Sử dụng hàm htmlspecialchars() hoặc html_escape():

<?php echo html_escape($username); ?>

9. Tối ưu hóa View

  • Tối giản hóa View: Tránh để quá nhiều logic xử lý trong View, chỉ sử dụng View để hiển thị dữ liệu.
  • Nén HTML: Bạn có thể nén HTML để giảm kích thước tệp và tăng tốc độ tải trang.

Kết luận

View trong CodeIgniter 3 giúp bạn quản lý giao diện người dùng một cách linh hoạt và hiệu quả. Việc hiểu rõ cách sử dụng View, cách truyền dữ liệu, và cách tổ chức mã nguồn sẽ giúp bạn xây dựng ứng dụng web mạnh mẽ và dễ bảo trì hơn. Nếu bạn cần thêm ví dụ hoặc có câu hỏi cụ thể, hãy cho mình biết nhé!