Trong CodeIgniter 3 để tạo các URL có độ sâu tuỳ ý như yêu cầu, bạn có thể cấu hình routes.php
một cách linh hoạt và sử dụng bộ định tuyến của CI3 để xử lý các URL phân cấp. Dưới đây là hướng dẫn chi tiết:
routes.php
Mở tệp application/config/routes.php
và cấu hình route để hỗ trợ URL có nhiều cấp độ. Bạn có thể sử dụng các tham số động trong route để bắt các phần khác nhau của URL.
Ví dụ:
$route['(:any)/(:any)/(:any)/(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3/$4/$5/$6'; $route['(:any)/(:any)/(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3/$4/$5'; $route['(:any)/(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3/$4'; $route['(:any)/(:any)-a(:num).html'] = 'articles/view/$1/$2/$3'; $route['(:any)-a(:num).html'] = 'articles/view/$1/$2';
(:any)
: Bắt bất kỳ chuỗi nào (thường được sử dụng cho tên danh mục hoặc bài viết).(:num)
: Bắt bất kỳ số nào (sử dụng cho ID bài viết)./php/wordpress/woocommerce/huong-dan-cac-trang-thai-don-hang-cua-woocommerce-a210.html
(:any)/(:any)/(:any)/(:any)-(:num).html
view
của controller articles
với các tham số $1, $2, $3, $4, $5
.Trong controller Articles.php
(tạo trong application/controllers/Articles.php
), bạn cần tạo hàm view
để xử lý các tham số từ URL:
class Articles extends CI_Controller { public function view($category1 = '', $category2 = '', $category3 = '', $category4 = '', $title = '', $id = '') { // Đây là nơi bạn xử lý bài viết theo ID và có thể các category nếu cần. // Tìm bài viết theo $id $data['article'] = $this->article_model->get_article_by_id($id); // Xử lý nếu không tìm thấy bài viết if (empty($data['article'])) { show_404(); } // Nếu cần, bạn có thể kiểm tra tính hợp lệ của $category1, $category2,... và $title với dữ liệu trong cơ sở dữ liệu. // Load view để hiển thị bài viết $this->load->view('articles/view', $data); } }
Trong application/models/Article_model.php
, bạn có thể có một model để lấy thông tin bài viết từ cơ sở dữ liệu:
class Article_model extends CI_Model { public function get_article_by_id($id) { $query = $this->db->get_where('articles', array('id' => $id)); return $query->row_array(); } }
Cuối cùng, bạn tạo view application/views/articles/view.php
để hiển thị bài viết:
<h1><?php echo $article['title']; ?></h1> <p><?php echo $article['content']; ?></p>
Với cấu hình trên, bạn có thể truy cập các URL có độ sâu khác nhau như:
engineer.net/php/wordpress/woocommerce/huong-dan-cac-trang-thai-don-hang-cua-woocommerce-a210.html
engineer.net/php/wordpress/woocommerce/plugin/huong-dan-cac-trang-thai-don-hang-cua-woocommerce-a210.html
Tất cả các URL này sẽ được chuyển hướng tới cùng một hàm view
trong controller Articles
, và bạn có thể xử lý logic tuỳ theo yêu cầu của mình.