Để triển khai cấu trúc url được đề xuất, chúng tôi phải tạo một điều phối viên trung tâm sẽ
- Phân tích URL được yêu cầu.
- Sẽ truy vấn cơ sở dữ liệu để tìm và hiển thị danh mục.
- Nếu không tìm thấy danh mục nào, nó sẽ cố gắng tìm và hiển thị bài đăng văn bản.
Nghe giống như công việc của một người điều khiển. Nhưng làm thế nào để chúng tôi tạo ra một bộ điều khiển đáp ứng mọi yêu cầu? Với sự trợ giúp của định tuyến ký tự đại diện!
application / config / route.php
$route['.*'] = 'default_controller';
Giờ đây, mọi yêu cầu, bất kể URI, sẽ được chuyển đến Default_controller.php
.
Nhưng làm thế nào để chúng ta viết controller mà không biết phương thức sẽ được gọi là gì? Có một cách:phương thức dịch vụ bộ điều khiển tích hợp sẵn _remap
.
Từ tài liệu :
Vì vậy, tôi đã tự tưởng tượng và tạo ra một khái niệm Default_controller cho bạn:
ứng dụng / bộ điều khiển / Default_controller.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Default_controller extends CI_Controller {
// Pseudocode ensues
public function _remap()
{
// www.mydomain.com/(someTextHere)
$slug = $this->uri->segment(1);
$result = $this->load_data($slug);
echo $result;
}
private function load_data($slug)
{
// Trying to find a category
$category = $this->category_model->find($slug);
if($category !== false)
{
// Presumably loads view into buffer
// and returns it to the calling method
return $this->load_category($category);
}
Trying to find post
$post = $this->post_model->find($slug);
if($post !== false)
{
return $this->load_post($post);
}
// Neither category nor post found
show_404();
}
private function load_category($category)
{
// http://www.codeigniter.com/user_guide/general/views.html#returning-views-as-data
return $this->load->view("category", array("category" => $category), true);
}
}
Lưu ý:đã kiểm tra câu trả lời này trên Codeigniter 3.0.3 mới được tải xuống