Trong CodeIgniter 3, file routes.php nằm trong thư mục application/config/ và được sử dụng để định nghĩa các quy tắc định tuyến (routing) cho ứng dụng. Routing cho phép bạn ánh xạ các URL đến các controller và phương thức cụ thể trong ứng dụng của bạn. Điều này giúp tạo ra các URL thân thiện với người dùng và dễ quản lý hơn.

Dưới đây là hướng dẫn chi tiết cách sử dụng file routes.php trong CodeIgniter 3.

1. Cấu Trúc Cơ Bản của routes.php

File routes.php có cấu trúc cơ bản như sau:

$route['default_controller']

Trong ví dụ này:

  • Khi người dùng truy cập example.com/product, CodeIgniter sẽ tải controller Catalog và gọi phương thức product() của nó.

2.2. Định Tuyến với Tham Số

Bạn có thể định tuyến với các tham số được chỉ định trong URL.

(:num)
  • (:any) khớp với bất kỳ chuỗi nào (số, chữ cái, hoặc ký tự khác).

Ví dụ: example.com/profile/john_doe sẽ gọi User::profile('john_doe').

2.4. Định Tuyến Đa Cấp

Bạn có thể định tuyến đến nhiều cấp trong một controller hoặc method.

example.com/blog/my-first-post/12
  • Mẫu này sẽ khớp với một URI bắt đầu với "post/", theo sau là một chuỗi ký tự (chỉ gồm chữ cái) và một số.

4. Định Tuyến Mặc Định và Ghi Đè

  • Mặc định: Bất kỳ tuyến nào không được định nghĩa rõ ràng sẽ sử dụng định tuyến mặc định (default_controller).
  • Ghi đè: Định tuyến có thể được ghi đè. Ví dụ:
'product'
  • d{4}: Khớp với bốn chữ số (năm)
  • d{2}: Khớp với hai chữ số (tháng và ngày)

URL example.com/archive/2024/09/01 sẽ gọi Archive::show('2024', '09', '01').

6. Tạo Các Tuyến Tùy Chỉnh

Bạn có thể tạo các tuyến tùy chỉnh để định nghĩa các quy tắc routing phức tạp hơn hoặc không theo một mẫu cụ thể.

redirect()

Ngoài ra, bạn có thể sử dụng hàm redirect() trong controller để chuyển hướng người dùng:

public function old_route() {
    redirect('new-route');
}

8. Các Lưu Ý Quan Trọng

  • Thứ tự của các tuyến: CodeIgniter xử lý các tuyến theo thứ tự chúng được định nghĩa. Do đó, các tuyến cụ thể hơn nên được đặt trước các tuyến tổng quát hơn.
  • Không sử dụng dấu gạch ngang trong tên phương thức: PHP không cho phép dấu gạch ngang trong tên phương thức, do đó bạn có thể cần sử dụng $route['translate_uri_dashes'] để tự động chuyển dấu gạch ngang thành dấu gạch dưới.
  • Kiểm tra cẩn thận các tuyến: Sử dụng lệnh echo hoặc hàm log_message() để debug và kiểm tra các tuyến khi cần thiết.

Kết Luận

routes.php trong CodeIgniter 3 là một công cụ mạnh mẽ để tùy chỉnh cách ứng dụng của bạn xử lý các URI. Hiểu và sử dụng nó đúng cách sẽ giúp bạn tạo ra các ứng dụng linh hoạt, thân thiện với người dùng và dễ quản lý.