CODEIGNITER 3X
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Bài 2: Tạo Controller Trong Codeigniter

Ở bài trước chúng ta đã tìm hiểu qua cấu trúc folder của Codeigniter, vậy thì trong bài này ta bắt đầu tìm hiểu qua mô hình MVC. Bài đầu tiên sẽ tìm hiểu đến controller trong codeigniter. Nội dung bao gồm: 

  • Tạo mới controller trong codeigniter
  • Truyền biến vào controller
  • Xác định controller mặc định
  • Hàm khởi tạo
  • Xóa đường dẫn index.php

1. Tạo Mới Controller Trong Codeigniter

Tất cả các controller trong codeigniter đều được đặt trong thư mục Application/Controllers của CI. Mặc định khi cài đặt CI đã tạo một controller tên là welcom.php, bạn xóa file này đi và tạo một file hello.php và điền nội dung vào là:
Trong đó:

if (!defined('BASEPATH'))
exit('No direct script access allowed');
 
class Hello extends CI_Controller {
 
    public function index() {
        echo 'Freetuts.net Hello Controller';
    }
}
Dòng if ( ! defined(‘BASEPATH’)) exit(‘No direct script access allowed’); là dòng Security bảo vệ file của các bạn, nó không cho truy cập thẳng vào file mà phải thông qua file index.php ở mức ngoài cùng.

Lớp Hello là tên Controller của chúng ta, nó kế thừa lớp CI_Controller của hệ thống Codeigniter, tất cả các Controller đều phải kế thừa CI_Controller thì mới sử dụng được các thư viện của CI và tên Controller phải bắt đầu bằng chữ hoa.

Hàm index là Action (method) của controller,. đây là một hàm mặc định của tất cả các controller trong Codeigniter nghĩa là nếu đường dẫn bạn chỉ gõ domain.com/hello thì mặc định nó sẽ chạy file index

Bạn ra trình duyệt gõ đường dẫn localhost/ten_project/index.php/hello/index, kết quả xuất ra màn hình là dòng “Freetuts.net Hello Controller” thì chúng ta đã tạo mới thành công rồi.

Bạn vào file Controller Hello thêm một hàm other mới như sau:
class Hello extends CI_Controller {
 
    public function index() {
        echo 'Freetuts.net Hello Controller';
    }
 
    public function other(){
        echo 'Freetuts.net Other Controller';
    }
}

 

Như vậy là ta đã tạo thêm một hàm (Action) mới trong controller Hello, bây giờ bạn ra trình duyệt gõ đường dẫn “localhost/codeigniter/index.php/hello/other” màn hình se xuất hiện dòng “Freetuts.net Other Controller”.

Qua hai ví dụ trên ta thấy mỗi Controller trong Codeigniter ta có thể tạo nhiều Action (hàm) trong đó, và mỗi action sẽ có những nhiệm vụ riêng biệt.

2. Truyền Biến Vào Controller

Trong mô hình MVC của các Framwork, biến truyền vào theo phương thức GET đều có dạng “domain.com/controller/action/parameter1/parameter2/…”,  Trong Codeigniter cũng vậy để truyền biến vào Controller bạn  sẽ có đường dẫn là “domain.com/index.php/controller/action/parameter1/parameter2/…” Trong hàm (Action) của controller ta sẽ nhận nó bằng cách truyền những biến có vị trí tương ứng với từng parameter trên url.

Ví dụ 1:
 

class Hello extends CI_Controller
{
    public function index($message = '')
    {
        echo 'Freetuts.net ' . $message;
    }
}

  Bạn ra trình duyệt gõ đường dẫn “localhost/codeigniter/index.php/hello/index/Hello Codeigniter Newbie“  thì màn hình sẽ xuất hiện chữ “Freetuts.net Hello Codeigniter”. Bạn hãy thử thay đổi biến truyền vào để kiểm tra sự huyền diệu của nó.

Biến $message truyền vào hàm (action) index mình gán nó giá trị khởi tạo bằng giá trị trống ”. Tại sao mình phải làm vậy ? tại vì theo nguyên tắc tất cả các hàm nếu truyền không đủ biến vào nó sẽ bị lỗi, nếu ta không gán giá trị mặc định thì nếu người dùng chỉ gõ “localhost/codeigniter/index.php/hello/index/” nó sẽ bị lỗi ngay, vì thế tất cả các biến truyền vào bạn phải gán giá trị mặc định để cho an toàn.

Ví dụ 2:
 

class Hello extends CI_Controller
{
    public function index($id = 0, $message = '')
    {
        echo 'Freetuts.net ID='.$id.' AND message ='.$message;
    }
}
Trong ví dụ này mình truyền 2 biến vào hàm (action) index và gán giá trị mặc định cho biến, bây giờ bạn thử ra trình duyệt gõ các đường dẫn sau:

  • localhost/codeigniter/index.php/hello/index/12/Hello => kết quả là “Freetuts.net ID = 12 AND message = Hello”
  • localhost/codeigniter/index.php/hello/index/12 => kết quả là “Freetuts.net ID = 12 AND message = ”
  • localhost/codeigniter/index.php/hello/index//Hello => kết quả là “Freetuts.net ID = AND message = Hello”

Qua ba ví dụ trên ta thấy các biến truyền vào hàm nó tuân theo thứ tự trên URL.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

3. Xác Định Controller Mặc Định

Controller mặc định là controller sẽ được gọi khi trên url bạn không gọi đến một controller nào. Bạn vào file application/config/routes.php kéo xuống phía dưới tìm đến dòng $route['default_controller'] = “welcome”;.Tại đây bạn sửa giá trị của biến $route['default_controller'] thành tên controller mà bạn muốn chạy mặc định, ví dụ tôi sẽ sửa thành $route['default_controller'] = “hello/other”; sau đó ra trình duyệt gõ đường dẫn “localhost/codeigniter” thì mặc định nó sẽ chạy đến controller “hello/other”.

4. Hàm Khởi Tạo

Trong lập trình hướng đối tượng thì tất cả các lớp đối tượng có hàm khởi tạo, hàm này sẽ chạy đầu tiên khi bạn khởi tạo một đối tượng mới. Trong PHP hàm khởi tạo được quy ước là đặt trùng tên với tên Lớp hoặc là bạn đặt tên __construct().

Nếu trong Controller bạn muốn sử dụng hàm khởi tạo thì bắt buộc bạn phải gọi đến hàm khởi tạo của cha nó (CI_Controller), vì trong PHP nếu hàm con kế thừa hàm cha mà hàm con có hàm khởi tạo thì nó sẽ chạy hàm khởi tạo của con chứ không chạy hàm khởi tạo của cha, mà trong hàm khởi tạo của cha lại chứa những đoạn code thiết lập hệ thống cho CI nên bắt buộc phải chạy nó.

 
class Hello extends CI_Controller
{
    // Hàm khởi tạo
    function __construct() {
        // Gọi đến hàm khởi tạo của cha
        parent::__construct();
    }
 
    public function index()
    {
        echo 'Freetuts.net';
    }
}

5. Xóa Đường Dẫn Index.php trong codeigniter

Trong các ví dụ trên URL để gọi Controller trong codeigniter luôn có file index.php nhìn rất là mất thẫm mỹ, để bỏ file index.php trên đường dẫn url trong codeigniter bạn làm như sau:
Tạo file .htaccess cùng cấp với file index.php, tức là ở ngoài cùng, sau đó copy nội dung này vào.
 

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ index.php/$1 [L]

Sau đó bạn ra trình duyệt gõ URL “localhost/codeigniter/hello/other” thì CI tự động hiểu và gọi đến Controller Hello và hàm (Action) other

Lời Kết:

Trong bài này tôi chỉ hướng dẫn các bạn cách sử dụng controller trong codeigniter đơn giản, còn rất nhiều kiến thức khác nhưng tôi nghĩ các bạn chưa cần tới vội nên tôi sẽ đề cập đến trong một bài nâng cao hơn. Bài tiếp theo chúng ta sẽ tìm hiêu cách load view trong codeigniter.

Cùng chuyên mục:

Chia sẻ theme web blog mobile đơn giản (Theme FMB1)

Chia sẻ theme web blog mobile đơn giản (Theme FMB1)

Freetuts Mobile Blog được code trên nền tảng PHP và MySQL, sử dụng Codeigniter Framework.

Bài 19: Rewrite URL trong Codeigniter

Bài 19: Rewrite URL trong Codeigniter

Sau một khoảng thời gian không đụng tới Codeigniter thì hôm nay lại có dịp…

Tìm hiểu quy trình load model trong codeigniter

Tìm hiểu quy trình load model trong codeigniter

Việc load model rất quen thuộc với những bạn sử dụng framwork codeigniter nhưng đôi…

Tự tạo thư viện load widget trong codeigniter

Tự tạo thư viện load widget trong codeigniter

Như các bạn biết mặc định hệ thống của Codeigniter hoạt động theo mô hình…

Hướng dẫn custom bộ core codeigniter

Hướng dẫn custom bộ core codeigniter

Có khi nào bạn đặt câu hỏi có nên sửa các file nằm trong bộ…

Bài 18: Tìm Hiểu Library Shopping Cart trong Codeigniter

Bài 18: Tìm Hiểu Library Shopping Cart trong Codeigniter

Chào mừng các bạn đã quay trở lại freetuts.net. Như vậy ở bài trước chúng…

Bài 17: Xây dựng crud add - update - edit user

Bài 17: Xây dựng crud add - update - edit user

Crud là một thuật ngữ không hề xa lạ với dân lập trình, nó là…

Bài 16: Kỹ thuật master layout trong codeigniter

Bài 16: Kỹ thuật master layout trong codeigniter

Đây là một vấn đề mở rộng mà CI không đề cập trong user guide,…

Bài 15: Tìm Hiểu Helper Language Trong Codeigniter

Bài 15: Tìm Hiểu Helper Language Trong Codeigniter

Trong bài viết này , chúng ta chỉ tìm hiểu ở khái niệm cơ bản…

Bài 14: Tìm Hiểu Helper Text Trong Codeigniter

Bài 14: Tìm Hiểu Helper Text Trong Codeigniter

Nhìn tiêu đề, hẳn các bạn đã đoán ra hôm nay chúng ta sẽ tìm…

Bài 13: Tìm Hiểu Helper Date Trong Codeigniter

Bài 13: Tìm Hiểu Helper Date Trong Codeigniter

Hôm nay chúng ta sẽ tiếp tục tìm hiểu sâu hơn về các helper mà…

Bài 12: Đóng dấu watermark image trong codeigniter

Bài 12: Đóng dấu watermark image trong codeigniter

Đầu tiên xin gửi lời cảm ơn các bạn đã quan tâm và theo dõi…

Bài 11: Tìm Hiểu Library Image Trong Codeigniter

Bài 11: Tìm Hiểu Library Image Trong Codeigniter

Kết thúc bài trước, chúng ta đã hoàn thành khá xuất sắc phần upload hình…

Bài 10: Tìm hiểu library upload trong codeigniter

Bài 10: Tìm hiểu library upload trong codeigniter

Chào mừng các bạn đã quay trở lại freetuts.net, đã lâu rồi tôi không viết…

Bài 9: Tìm Hiểu Library Form Validation

Bài 9: Tìm Hiểu Library Form Validation

Cho tới bài viết này, chắc hẵn các bạn đều đã biết rõ cách load…

Bài 8: Tìm hiểu Helper Url Và Form Trong Codeigniter

Bài 8: Tìm hiểu Helper Url Và Form Trong Codeigniter

Trong Codeigniter Framework nó chia ra 2 khái niệm đó là helper & library, vậy…

Bài 7: Load Library Pagination Trong Codeigniter

Bài 7: Load Library Pagination Trong Codeigniter

Đây là một library cũng khá là phổ biến, hay được sử dụng trong quá…

Bài 6: Load Library Database Trong Codeigniter

Bài 6: Load Library Database Trong Codeigniter

Tôi sẽ không giới thiệu về library này mà sẽ xoáy sâu vào các thao…

Bài 5: Load Library Session Trong Codeigniter

Bài 5: Load Library Session Trong Codeigniter

Đây là một thư viện khá là quan trọng , trong framework CI (Codeigniter) .…

Bài 4: Load Model Trong Codeigniter

Bài 4: Load Model Trong Codeigniter

Trong Codeigniter để kết nối với Database chúng ta phải cấu hình thông tin cho…

Top