Kết nối database ở file routes trong CodeIgniter 3x

File routes.php trong CodeIgniter dùng để điều hướng controllers dựa theo link bạn viết, tuy nhiên để đường link đẹp, thay đổi được trong database ta phải viết câu lệnh query từ database và kiểm tra xem nó thuộc controllers nào
  • 09:12 12/01/2017
  • Kỳ Nhân
  • 0 Bình luận
  • 450

Với mục đích tạo đường link đẹp và tạo câu lệnh truy vấn từ database để chỉ định routes trong codeigniter ta làm các bước sau.

Tại file routes.php ta chèn thêm dòng code

require_once( BASEPATH .'database/DB.php' );
$db =& DB();

Bình thường tại controllers các bạn viết hàm select database kiểu

$this->db->query('cau_lenh');

Nhưng khi chèn trong file routes.php các bạn viết các câu query theo kiểu

$db->query("cau_lenh");

Trong file routes.php các bạn vẫn có thể sử dung các hàm như: $this->uri->segment(1)

+ Ví dụ: ta có các đường dẫn tương ứng là ten_mien/san-pham.html, ten_mien/tin-tuc.html. Giờ viết điều hướng san-pham là controllers Product, tin-tuc là controllers Contents.

Thường nếu các link san-pham, tin-tuc không thay đổi các bạn viết routes dạng

$route['san-pham'] = 'product';
$route['tin-tuc'] = 'contents';

Tuy nhiên viết theo các trên, khi thay đổi các link sản phẩm, tin tức khác đường link sẽ không nhận, cần phải viết lại

Để làm được linh động các bạn lưu vào database một bảng ví dụ là tên post dạng,

title link controller
Sản phẩm san-pham Product
Tin tức tin-tuc Contents

Khi đó các bạn chỉ cần select database dựa vào đường link trên url rồi xác định controllers thôi.

Giả sử có link ten_mien/san-pham.html ta viết trong routes.php như sau:

$query = $db->query("select * from post where link='{$this->uri->segment(1)}'")->row();
switch(true) {
    case ($query->controller == 'Product'): 
        $route[ $this->uri->segment(1) ] = 'Product'; 
        break;
    case ($query->controller == 'Contents'): 
        $route[ $this->uri->segment(1) ] = 'Contents'; 
        break;
}

Tượng tự nếu các bạn thêm các controller khác chỉ cần thêm trong database rồi chỉ định trong file routes, sau này các bạn tạo nhiều danh mục cũng không phải viết routes tiếp nữa. mà link sẽ đẹp hơn dạng ten_mien/ten_post.html đẹp hơn