Bài 3: Load View Trong Codeigniter

Trong bài này tôi sẽ hướng dẫn các bạn cách load view trong codeigniter, nội dung bao gồm:
  • Tạo Mới Một View Trong Codeigniter
  • Load View Trong Controller

1. Tạo Mới Một View Trong Codeigniter

Trong Codeigniter tất cả các Views đều được đặt trong thư mục application/views. Các bạn vào folder đó tạo một file tên là login_view.php, trong view các bạn tạo một form login như sau:

File application/views/login_view.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form method="POST" action="">
            Username : <input type="text" name="username" value=""/> <br/>
            Password : <input type="password" name="password" value=""/> <br/>
            <input type="submit" name="submit_login" value="Login"/>
        </form>
    </body>
</html>

Vậy là bạn đã tạo được một view trong codeigniter rồi đó.

2. Load View Trong Controller

Có rất nhiều cách load view trong codeigniter, dưới đây là những cách load thông dụng

Load View:

Sau khi có view login_view.php ở trên, bạn vào tạo một controller mới với tên là Login có nội dung như sau:

File application/controllers/Login.php:

1
2
3
4
5
6
7
8
9
class Login extends CI_Controller
{
    // Hàm load form login
    public function load_form()
    {
        // Load view
        $this->load->view('login_view');
    }
}
Controller Login dùng để xử lý login, hàm (action) load_form dùng để load form login cho người dùng nhập dữ liệu và các controller bạn đặt tên nên có động từ ở đầu thì sẽ hay hơn.

Cú pháp để load view là : $this->load->view(‘tên view’);

Bạn ra trình duyệt gõ URL “localhost/codeigniter/login/form_login” nếu xuất hiện một form login thì bạn đã load view trong controller thành công rồi đấy.

Load Nhiều View

Để load nhiều view bạn chỉ cần dùng cú pháp load view nhiều lần, ví dụ:

1
2
3
4
5
$this->load->view('view1');
$this->load->view('view2');
$this->load->view('view3');
$this->load->view('view4');
$this->load->view('view5');

Load View Ở Sub Folder

Thông thường ta sẽ lưu các view liên quan với nhau trong một folder riêng, ví dụ:
- application/views/product/lists.php
- application/views/product/add_form.php
- application/views/product/add_edit.php
Vậy để load view nằm ở sub folder dạng này ta dùng cú pháp sau:

1
$this->load->view('subfolder/view1');

Load View Ở Dạng Biến

Nếu bạn muốn load một view ở dạng biến thì bạn dùng cú pháp sau: $var = $this->load->view(‘view_name’, ”, true);

Ví dụ:

1
2
3
4
5
6
7
8
9
10
11
12
class Login extends CI_Controller
{
    // Hàm load form login
    public function form()
    {
        // Load view lưu vào một biến
        $login_form = $this->load->view('login_view', '', true);
  
        // Xuất view ra màn hình
        echo $login_form;
    }
}

Truyền Dữ Liệu Qua View

Để truyền dữ liệu qua view thì tất cả dữ liệu bạn phải đưa vào một mảng kết hợp $data, Controller sẽ tự động tạo các biến bên view tương ứng với các key và các value trong mảng $data đó. Mỗi dữ liệu có thể ở các kiểu như: float, double, int, string, object, array.

Ví dụ:

Trong controller Login: (File application/controllers/Login.php)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Login extends CI_Controller
{
    // Hàm load form login
    public function form()
    {
        // Data cần truyền qua view
        $data = array(
            'title' => 'Đây là trang login',
            'message' => 'Nhập Thông Tin Đăng Nhập'
        );
  
        // Load view và truyền data qua view
        $this->load->view('login_form', $data);
    }
}
Trong View Login_form (File application/views/login_view.php):

Bạn xóa hết nội dung cũ và gõ vào đoạn code PHP sau:
1
2
3
4
5
6
7
8
// Tương ứng với $data['title'] bên controller
echo $title;
  
echo '
';
  
// Tương ứng với $data['message'] bên controller
echo $message;

Lời Kết

Trong bài này chúng ta chỉ tìm hiểu một vài cú pháp xử lý view chứ chưa gọi là cao siêu gì, nhưng đó là nền tảng đấy nhé các bạn. Bài tiếp theo chúng ta sẽ tìm hiểu cách load model trong codeigniter.