NTM Solutions

Facebook Youtube Google+

Thứ Hai, 19 tháng 11, 2018

Tự học CodeIgniter-Bài 01-CodeIgniter URLs

#hoccodeigniter

Mặc định, URLs trong CodeIgniter được thiết kế thân thiện với các bộ máy tìm kiếm và người dùng, thay vì dạng “truy vấn” mặc định của hệ thống tự sinh ra, CodeIgniter dùng liên kết dạng “phân đoạn

example.com/news/article/my_article

Chú ý:
URLs dạng truy vấn vẫn có tùy chọn để kích hoạt lại (xem trong phần sau) .

Phân đoạn trong URI


Các phân đoạn trong URL, theo mô hình Model-View-Controller, thường có dạng như vầy:
example.com/lớp/hàm/ID

  • Đoạn đầu tiên là tên lớp controller cần gọi.
  • Đoạn thứ 02 là tên hàm, hay phương thức cần gọi.
  • Đoạn thứ 03, và các đoạn bổ sung khác thể hiện ID hay tham số sẽ được truyền vào controller.

URI LibraryURL Helper chứa các hàm giúp việc thao tác với dữ liệu URI dễ dàng hơn. Hơn nữa, Các URLs của bạn có thể thay đổi địa chỉ trỏ đến bằng cách dùng tính năng URI Routing trong các trường hợp phức tạp hơn.

Xóa đường dẫn đến index.php

Mặc định, tập tin index.php sẽ luôn được đính kèm vào URLs:
example.com/index.php/news/article/my_article
Nếu máy chủ Apache của bạn có bật mod_rewrite , bạn có thể dễ dàng xóa tập tin này bằng cách sửa tập tin .htaccess với 01 vài thiết lập qui tắc đơn giản. Sau đây là 01 ví dụ dùng phương thức “negative” đổi hướng tất cả mọi yêu cầu ngoại trừ các mục riêng biệt:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]

Trong ví dụ trên, bất kỳ yêu cầu HTTP nào đến các thư mục hay các tập tin đều được xem như là 01 yêu cầu đến tập tin index.php
Ghi chú:
  • Các qui tắc này có thể sẽ không hoạt động trên tất cả cấu hình các máy chủ.
  • Đảm bảo rằng bạn phải loại trừ các trường hợp cần quyền truy cập đến bất kỳ tài nguyên nào từ bên ngoài máy chủ web.
Thêm phần đuôi URL

Trong tập tin config/config.php bạn có thể xác định phần bổ sung sẽ được thêm vào tất cả URLs xử lý bởi CodeIgniter. Ví dụ, nếu 01 URL như vầy:
example.com/index.php/products/view/shoes
Ta có thể thêm phần bổ sung ví dụ như .html -> tạo cảm giác như là liên kết tới 01 trang html nào đó:
example.com/index.php/products/view/shoes.html

Kích hoạt liên kết dạng truy vấn
Trong 01 vài trường hợp bạn sẽ cần dùng cấu trúc dạng chuỗi truy vấn trong các URLs:
index.php?c=products&m=view&id=345

CodeIgniter có 01 tùy chọn cho việc này, ta sẽ vào đây để sửa application/config.php. Nếu bạn mở tập tin cấu hình của bạn bạn sẽ thấy các mục này:
$config['enable_query_strings'] = FALSE;

$config['controller_trigger'] = 'c';

$config['function_trigger'] = 'm';

Ta chỉ cần đổi “enable_query_strings” thành TRUE , tính năng này sẽ được kích hoạt. Các controllers và các hàm của bạn sau đó sẽ được gọi bằng cách truyền tham số vào các từ khóa  “trigger”
index.php?c=controller&m=method

Ghi chú:
Nếu bạn đang dùng  dạng liên kết là câu truy vấn bạn phải tự thiết lập các URLs, thay vì dùng các hàm xử lý URL helpers (và các hàm khác liên quan URLs, ví dụ như các hàm xử lý biểu mẫu) do chúng được thiết kế để hoạt động hiệu quả với các URLs dạng phân đoạn.
Nếu vẫn chưa rõ các bạn xem thêm video clip sau:


By #tiensim

Nguồn: User Guide – General Topics