-Để bắt đầu, bạn cần bỏ ra khoảng 15’ để xem lại bài viết về framework của bác phpKungfu đế nắm sơ về mô hình MVC trong lập trình PHP. Không cần hiểu cách làm, chỉ cần hiểu cách ứng dụng.
Để bắt tay vào làm việc với CI, việc đầu tiên bạn cần phải làm là … download 1 bản CI về . Và nó ở đây :CodeIgniter , không có gì khó khăn đúng không. Bản mới nhất đến thời điểm này là 1.6.3 .Download về và giải nén, copy nó vào webroot của bạn để bắt đầu, rename nó thành tên bạn muốn ( tôi dùng tên là cidemo). Cấu trúc sau khi giải nén ra như sau :
Tớ sẽ nói qua về cấu trúc thư mục của CI để các bạn nắm và dễ làm việc.
Trong một rừng file và folder ấy bạn chỉ cần chú ý đến file index.php ở ngoài gốc và folder application trong folder system. Đó chính là vùng làm việc của bạn với CI , các file và folder khác bạn ko cần quan tâm và chú ý làm gì ( nhưng cũng đừng xóa nó nhá ). Ngoài ra có 1 folder user_guide chứa tài liệu hướng dẫn, bạn có thể xóa đi hoặc copy nó sang nơi khác dành để tham khảo.
- file index.php đóng vai trò là 1 bootstrapper cho ứng dụng, nó sẽ nhận yêu cầu và chuyển đến những nơi cần thiết để xử lý. Nó cũng tiến hành khởi tạo một số thứ cần thiết cho ứng dụng. Tạm thời bạn không cần chỉnh sửa gì file này cả, cứ để nó như thế, khi nào quen bạn sẽ biết cách cấu hình lại một số thứ tại file index.php này.
-Folder application : đây là nơi chứa code của bạn. Và trong folder này cũng có 1 số thư mục con nhằm giúp bạn quản lý code của bạn theo mô hình MVC. Cụ thể các thư mục con đó gồm :
+ config : Nơi bạn đặt các file dùng cho việc cấu hình ứng dụng như thông tin kết nối cơ sở dữ liệu , tên site. url site …
+ controllers : Nơi đặt các file thực hiện chức năng controller ( điều hướng và xử lý yêu cầu )
+ errors: Nơi chứa các file thông báo lỗi của bạn. Mặc định sẽ có 1 số mẫu báo lỗi thông thường đi kèm.
+ helpers : chứa các thư viện dạng hàm ( function) nhằm phục vụ quá trình phát triển ứng dụng cho bạn tạo.
+ hooks : chứa các file xử lý hooks ( tác động vào core library của CI ko cần sửa file ) . Chức năng này tạm thời chưa tìm hiểu đến
+ language : Nếu site của bạn có từ 2 ngôn ngữ trở lên thì đặt các file ngôn ngữ tại đây.
+ libraries : Chứa các lớp tiện ích cho ứng dụng do bạn tự tạo
+ Models : Chứa các file thực hiện chức năng model trong MVC , cụ thể ở đây có thể là các file giúp bạn thao tác với cơ sở dữ liệu theo yêu cầu từ controller
+ views : chứa các file thực hiện tác vụ view trong mô hình MVC , cứ tạm xem nó là nơi chứa file giao diện cho ứng dụng.
Và tạm thời chúng ta chỉ làm việc chủ yếu trên config, controllers , models và views . các thứ khác có thể từ từ tìm hiểu sau.
Ok, bắt đầu cài đặt CI,sau khi đã giải nén vào webroot, ta thử duyệt đến trang này xem : http://localhost/[Tên thư mục chứa CI], trong vd của tớ thư mục chứa CI là cidemo => http://localhost/cidemo
Nếu nó hiện ra 1 trang chứa dòng Welcome To Codeigniter có nghĩa là bạn đã thành công ( Tớ chưa từng thất bại ở bước này nên không rõ thất bại nó sẽ như thế nào :d ).
- Nhưng chưa xong đâu, bạn cần phải cấu hình thêm 1 tí nữa là nó mới làm việc tốt. mở file config.php trong system/application/config ( từ đây về sau phần system/application bạn sẽ tự hiểu nhá, vd tôi nói mở file config.php trong config thì bạn sẽ hiểu là system/application/config/config.php ) và tìm dòng $config['base_url'], sửa nó thành đường địa chỉ của bạn, theo như vd tôi sẽ cấu hình
- $config['base_url'] = "http://localhost/cidemo/";
Mục đích của việc này là giúp cho các hàm trợ giúp tự sinh url của CI làm việc chính xác.
Kế đến bạn mở file config/routes.php và tìm dòng
$route['default_controller'] = 'welcome';
Thay bằng
$route['default_controller'] = 'home';
Thay home bằng bất cứ gì bạn thích, nhưng phải nhớ .Đây chính là controller mặc định mà CI sẽ tìm đến khi ko cung cấp controller. Phía sau tớ sẽ giải thích về các controller này.
Nếu ứng dụng của bạn có thao tác với cơ sở dữ liệu thì hãy cấu hình thông tin kết nối cơ sở dữ liệu trong config/database.php
Thế là xong bước cài đặt và cấu hình cơ bản.
Sau khi cấu hình như tôi nói thì bạn ko chạy được ứng dụng theo cách gõ đường dẫn http://localhost/cidemo . Có lẽ bạn sẽ lầm bầm chửi rủa tớ xúi dại . Nhưng hãy bình tĩnh, chả có gì phải lo, lý do ko chạy được là do Ci ko tìm được controller thích hợp, và để tiếp tục ta phải tạo ra controller thôi.
Vậy controller là gì mà nếu ko có nó ứng dụng ko chạy được. Và tớ xin trân trọng giới thiệu : controller chính là trái tim của ứng dụng viết bằng CI, nó xác định các yêu cầu HTTP được xử lý như thế nào. Yêu cầu HTTP là gì ? Đó là những truy vấn thông qua giao thức HTTP như : Mở trình duyệt đánh url : http://localhost/cidemo/index.php/blog <= 1 yêu cầu HTTP , hoặc gửi dữ liệu dạng POST thông qua 1 form đến địa chỉ trên cũng là 1 yêu cầu HTTP.
Và các yêu cầu HTTP này khi gửi đến ứng dụng viết trên CI sẽ được phân tích và xác định controller của yêu cầu đó và tiếp đến sẽ gọi controller đó ra xử lý yêu cầu.
Và hãy tìm hiểu khi 1 URL gửi đến CI nó sẽ được phân tích ra sao .
Hãy xét URL sau :
example.com/index.php/news/article/my_article
Khi yêu cầu HTTP gửi đến có dạng như trên thì CI sẽ phân tích ra :
- news là controller
- article : là phương thức
- my_article : Giá trị
Trong Ci , controller tương ứng với 1 class đặt trong folder controllers. Như VD trên khi nhận yêu cầu như thế CI sẽ tìm trong folder controller file có tên là news.php và trong file này nó sẽ tìm class tên News và tạo thể hiện của nó . Quyền điều khiển ứng dụng hiện thời sẽ do class News này thực hiện, và trong class News này sẽ gọi phương thức article và truyền cho phương thức này tham số my_article
Nếu như url chỉ là example.com/index.php thì CI sẽ lấy controller mặc định được ra cấu hình bên trên ra thực thi. Và phương thức mặc định sẽ là index không có tham số.
Tổng quát lên ta có :
http://example.com/index.php/class/function/ID
- Controller ( lớp ) class sẽ được thực thi
- Phương thức function được gọi
- ID là tham số được truyền vào.( có thế có nhiều giá trị phân cách theo dấu / )
Mặc định, index.php sẽ đi kèm theo url như ta thấy ở trên , chúng ta hoàn toàn có thể loại bỏ index.php này đi thông qua một số thiết lập, nhưng chúng ta sẽ tìm hiểu việc này sau. Tạm thời cứ để đấy, cũng chả ảnh hưởng gì nhiều đến hòa bình thế giới cả
Tôi nói , các bạn có hiểu không ? Nếu chưa hiểu hãy đọc lại 1 vài lần nữa, tưởng tượng trong đầu để hình dung cách thức làm việc của controller. Không hiểu được chỗ này xem như không thể làm việc được với CI.
Nếu đã hiểu thì ta trở lại với ứng dụng , tiến hành cứu chữa nó thôi . Như tớ đã nói , ứng dụng hiện đang bị lỗi do CI không tìm được Controller mặc định theo như ta cấu hình ( home) . Thế thì ta phải tự tạo ra controller này :
Ta tạo file home.php trong thư mục controller với nọi dung như sau :
Code:
class Home extends Controller
{
// Tạo phương thức xây dựng cho lớp
function Home()
{
//Gọi phương thức xây dựng của lớp cha
parent::Controller();
}
function index()
{
echo "Default Controller";
}
}
?>
Và chạy thử http://localhost/cidemo
Xong Bài 2
(Theo Doangia thành viên trên PHPvn.org)