Luồng xử lý trong CodeIgniter
Trong bài học này, học viên sẽ tìm hiểu cách CodeIgniter xử lý một request từ trình duyệt, bao gồm:
- Cách một yêu cầu HTTP được tiếp nhận và xử lý trong CodeIgniter.
- Quy trình hoạt động của Controller, Model, và View.
- Cách CodeIgniter định tuyến URL (Routing).
- Thực hành tạo trang đầu tiên với CodeIgniter.
Việc hiểu rõ luồng xử lý giúp lập trình viên xây dựng ứng dụng một cách có tổ chức và hiệu quả.

Luồng xử lý
1. Cách CodeIgniter xử lý một request từ trình duyệt
Khi một người dùng nhập một URL vào trình duyệt, CodeIgniter xử lý yêu cầu theo luồng sau:
-
Người dùng nhập URL vào trình duyệt (ví dụ:
http://localhost/home
). - Bộ định tuyến (Routing) của CodeIgniter xác định Controller cần gọi.
- Controller nhận yêu cầu và xử lý logic (nếu cần, nó gọi Model để lấy dữ liệu).
- Model lấy dữ liệu từ cơ sở dữ liệu và gửi lại Controller.
- Controller truyền dữ liệu đến View để hiển thị trên trình duyệt.
- Trình duyệt hiển thị nội dung trang web cho người dùng.
Tóm tắt: Trình duyệt → Routing → Controller → Model (nếu có) → View → Trình duyệt
2. Quy trình hoạt động của Controller, Model, View
Controller (Bộ điều khiển)
- Là thành phần quan trọng xử lý request từ người dùng.
- Quyết định dữ liệu nào cần lấy từ Model và hiển thị View nào.
- Được đặt trong thư mục
controllers/
(CI3) hoặcapp/Controllers/
(CI4).
Ví dụ về một Controller đơn giản:
Trong CodeIgniter 3:
<?php
class Home extends CI_Controller {
public function index() {
echo "Chào mừng bạn đến với CodeIgniter!";
}
}
Trong CodeIgniter 4:
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
class Home extends Controller {
public function index() {
echo "Chào mừng bạn đến với CodeIgniter 4!";
}
}
Lưu ý: Tên file phải là Home.php
và phải đặt trong thư mục controllers/
hoặc app/Controllers/
.
Model (Mô hình dữ liệu)
- Quản lý dữ liệu, tương tác với cơ sở dữ liệu.
- Được đặt trong thư mục
models/
(CI3) hoặcapp/Models/
(CI4). - Dùng để truy vấn, thêm, sửa, xóa dữ liệu trong database.
Ví dụ về một Model lấy danh sách người dùng:
Trong CodeIgniter 3:
<?php
class User_model extends CI_Model {
public function getUsers() {
return $this->db->get('users')->result_array();
}
}
Trong CodeIgniter 4:
<?php
namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model {
protected $table = 'users';
}
Lưu ý: Model không trực tiếp hiển thị dữ liệu mà được Controller gọi đến.
View (Giao diện hiển thị)
- Chứa mã HTML để hiển thị nội dung lên trình duyệt.
- Được đặt trong thư mục
views/
(CI3) hoặcapp/Views/
(CI4). - Nhận dữ liệu từ Controller để hiển thị.
Ví dụ về một View hiển thị danh sách người dùng:
Trong CodeIgniter 3 & 4:
<!DOCTYPE html>
<html>
<head><title>Danh sách người dùng</title></head>
<body>
<h1>Danh sách người dùng</h1>
<ul>
<?php foreach ($users as $user): ?>
<li><?= $user['name']; ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>
Lưu ý: Controller sẽ truyền dữ liệu $users
đến View này để hiển thị.
3. Cách CodeIgniter định tuyến URL (Routing)
Routing là gì?
- Là cách CodeIgniter xác định Controller nào sẽ xử lý yêu cầu của người dùng.
- Được cấu hình trong file
routes.php
(CI3) hoặcapp/Config/Routes.php
(CI4).
Ví dụ định tuyến trong CodeIgniter
Trong CodeIgniter 3 (application/config/routes.php):
$route['default_controller'] = 'home'; // Trang mặc định là Home
$route['about'] = 'pages/about'; // Truy cập /about sẽ gọi Pages::about()
Trong CodeIgniter 4 (app/Config/Routes.php):
$routes->get('/', 'Home::index'); // Trang chủ
$routes->get('about', 'Pages::about'); // Truy cập /about sẽ gọi Pages::about()
4. Ví dụ thực tế: Tạo trang đầu tiên với CodeIgniter
Chúng ta sẽ tạo một trang "Giới thiệu" (about
) hiển thị thông tin đơn giản.
Bước 1: Tạo Controller About.php
Trong CodeIgniter 3:
<?php
class About extends CI_Controller {
public function index() {
$this->load->view('about');
}
}
Trong CodeIgniter 4:
<?php
namespace App\Controllers;
class About extends BaseController {
public function index() {
return view('about');
}
}
Bước 2: Tạo View about.php
Trong CodeIgniter 3 & 4 (application/views/about.php hoặc app/Views/about.php):
<!DOCTYPE html>
<html>
<head><title>Giới thiệu</title></head>
<body>
<h1>Giới thiệu về chúng tôi</h1>
<p>Chào mừng bạn đến với trang Giới thiệu!</p>
</body>
</html>
Bước 3: Định tuyến URL
Trong CodeIgniter 3 (application/config/routes.php
):
$route['about'] = 'about/index';
Trong CodeIgniter 4 (app/Config/Routes.php
):
$routes->get('about', 'About::index');
Kết quả: Khi truy cập http://localhost/about
, trang "Giới thiệu" sẽ hiển thị!
Kết luận
- CodeIgniter xử lý request theo luồng: Trình duyệt → Routing → Controller → Model → View → Trình duyệt.
- Controller chịu trách nhiệm xử lý logic, Model quản lý dữ liệu, View hiển thị nội dung.
- Routing giúp CodeIgniter xác định đúng Controller cần gọi khi nhận request từ trình duyệt.
- Học viên đã biết cách tạo một trang đơn giản trong CodeIgniter.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com