Nội dung
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Mình đã có một vài bài viết hướng dẫn về codeigniter, tuy nhiên không dành cho người mới bắt đầu. Bài viết này mình sẽ dành thời gian để hướng dẫn từ codeigniter cơ bản cho các bạn mới học. Tại thời điểm này mình sử dụng codeigniter 2.0.2
Trong hướng sau đây tôi hướng đến developer cho những ai thích code theo lập trình hướng đối tượng với mô hình MVC.
Yêu cầu
Khi sử dụng codeigniter bạn cần biết mô hình thiết kế MVC, để hiểu hơn về mô hình này bạn có thể đọc khái niệm mvc trên wiki.
Bạn cũng có sẵn cài đặt webserver xampp/wamp trên localhost hoặc một PHP web server khác trên máy tính. Bây giờ, hãy tải phiên bản mới nhất của Codeigniter
Cấu trúc thư mục
Codeigniter có 2 folder chính là ‘system’ và ‘application’.
Thư mục ‘system’ chứa các files hệ thống của framework. Khi có phiên bản mới, bạn có thể nâng cấp bằng cách thay thư mục system bằng cách lấy trong files tải về mới nhất. Chú ý: bạn không nên động vào thư mục hệ thống này vì không bao giờ cần làm việc với nó. Tất cả code của bạn sẽ đặt trong folder ‘application’. Hình ảnh dưới đây là danh sách cách thư mục con có trong application.
Giải thích:
- Cache: nơi chứa các file cache sinh ra bởi codeigniter. Tuy nhiên bạn sẽ thiết lập quyền truy cập để codeigniter có thể viết vào folder này. Để học cách sử dụng cache, vui lòng xem bài sử dụng cache trong codeigniter.
- Config: Thư mục này chứa cấu hình có liên quan đến thiết lập database, route, định nghĩa các hằng và các thành phần autoload. Để biết chi tiết bạn có thể truy cập codeigniter documentation về cách sử dụng config class.
- Controller: trong thư mục chứa các lớp Controller, có thể nói rằng đó là điểm truy cập đầu vào của ứng dụng, mọi request sẽ gọi vào phương thức của controller.
- Core: Nếu chúng ta cần mở rộng chức năng của các file hệ thống như controller, loader, router…thì chúng ta có thể tạo lớp mới ở đây và kế thừa core class.
- Errors: trong này chứa các template cơ bản cho việc hiển thị những lỗi như db error, lỗi cú pháp php, 404 not found…bạn có thể thay đổi sau đó.
- Helpers: nơi chứa các file helper. Xem thêm tại đây.
- Hooks: bạn có thể khai báo mọi hooks ở đây, xem thêm sử dụng hooks.
- Language: thư mục này chứa các files ngôn ngữ. Bằng cách nạp nhiều ngôn ngữ khác nhau, website của bạn có thể hỗ trợ nhiều ngôn ngữ. Xem chi tiết: sử dụng language class.
- Libraries: trong thư mục sẽ chứa những file class thư viện dùng cho application.
- Logs: theo dõi logs của codeigniter từ các file tạo trong thư mục này. Để học cách viết log debug/error/info vui lòng đọc sử lý error.
- Migrations: thư mục này với các file đồng bộ với helpers.
- Models: thư mục này bao gồm tất cả class model sử dụng trong application của bạn. Phần này có thể nói nó là ‘data access layer’ trong ứng dụng của chúng ta.
- Third_party: nơi sẽ gồm các file thư viện ngoài. Sự khác nhau giữa ‘third_party’ và ‘libraries’ là một trong số chúng được tạo có liên quan đến dữ liệu lấy từ ứng dụng còn third-party được nhập và sử dụng từ bên ngoài.
- Views: thư mục này sẽ chứa tất cả các file templates hiển thị ra trình duyệt.
Cấu trúc URL
Codeigniter sử dụng cấu trúc URL rất linh hoạt nó toàn bộ liên kết với tên controller và tên phương thức của nó. Để truy cập phương thức trong controller, bạn sử dụng url có dạng: {root_url}/index.php/{controller_name}/{method_name}
Để biết chi tiết bạn có thể xem tài liệu này.
Tạo một Controller Đơn giản
Bây giờ chúng ta tạo file controller đơn giản. Tạo một file mới trong thư mục ‘controller’ với tên ‘blog.php’. Copt đoạn code dưới đây vào file controller này.
if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Blog extends CI_Controller { /** * Index Page for this controller. * * Maps to the following URL * http://example.com/index.php/blog * - or - * http://example.com/index.php/blog/index * - or - * So any other public methods not prefixed with an underscore will * map to /index.php/blog/{method_name} * @see http://codeigniter.com/user_guide/general/urls.html */ public function index() { echo "Hello World"; } } /* End of file Blog.php */ /* Location: ./application/controllers/blog.php */
Bây giờ, bạn mở url “http://localhost/ci_app/index.php/blog” bạn sẽ thấy nội dung “Hello World” hiển thị trên trang. Phương thức ‘index’ mặc định sẽ được gọi khi không có phương thức nào chỉ định trên url. Như vậy bạn hiểu một điều rất rõ ràng là để tạo page chúng ta có thể không cần model / file view nhưng bắt buộc phải có controller.
Tạo model
Tiếp theo, chúng ta cần tạo một model, để cho đơn giản mình sẽ không làm việc với database mysql của codeigniter, tuy nhiên thông tin cơ sở dữ liệu bạn sẽ cấu hình trong ‘config/database.php’. Sau đó bạn có thể truy cập database bằng cách trực tiếp hoặc sử dụng codeigniter database helper với thư viện ‘active record’ sẽ giúp bạn tạo/thực thi lệnh SQL một cách chuyên nghiệp. Tham khảo thêm về active record class trong Codeigniter.
Ví dụ sau đây chúng ta sử dụng cho lớp model.
if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Blogmodel extends CI_Model{ /** * returns a list of articles * @return array */ function get_articles_list(){ $list = Array(); $list[0]->title = "first blog title"; $list[0]->author = "author 1"; $list[1]->title = "second blog title"; $list[1]->author = "author 2"; return $list; } } ?>
Sửa lại Controller
Để sử dụng dữ liệu từ model, chúng ta sẽ sửa lại code controller để có thể nhận data từ model và gửi đếm view. Mở Blog.php và đổi thành:
if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Blog extends CI_Controller { public function index() { $this->load->model("blogmodel"); $articles = $this->blogmodel->get_articles_list(); $data["articles"] = $articles; $this->load->view('blog/index',$data); } }
Tạo View
Tiếp đến là phần tạo file view, trong file sẽ hiển thị dữ liệu mà chúng ta lấy từ model ‘blogmodel’ tạo thành HTML. Nội dung template giống như sau:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Welcome to Blog Page</title> <style type="text/css"> body { background-color: #fff; margin: 40px; font-family: Lucida Grande, Verdana, Sans-serif; font-size: 14px; color: #4F5155; } a { color: #003399; background-color: transparent; font-weight: normal; } h1 { color: #444; background-color: transparent; border-bottom: 1px solid #D0D0D0; font-size: 16px; font-weight: bold; margin: 24px 0 2px 0; padding: 5px 0 6px 0; } code { font-family: Monaco, Verdana, Sans-serif; font-size: 12px; background-color: #f9f9f9; border: 1px solid #D0D0D0; color: #002166; display: block; margin: 14px 0 14px 0; padding: 12px 10px 12px 10px; } </style> </head> <body> <h1>Welcome To my blog</h1> <?php foreach($articles as $article) { ?> <h3><?php echo $article->title; ?></h3> By <strong><?php echo $article->author; ?></strong> <?php } ?> </body> </html>
Gọi file view từ controller
Trong controller trên như bạn đã biết cách gọi file view/template. Tuy nhiên có một điều bạn sẽ cần lưu tâm. Cách load view truyền thống của Codeigniter là include file .php và bạn có thể đặt ở nơi thậm trí trong thư mục con tại folder ‘views’. Bạn chỉ việc cung cấp đường dẫn chính xác trong thư mục views, chẳng hạn bạn có thư mục ‘blog’ chứa trong ‘views’, chúng ta sẽ gọi template có dạng như sau:
$this->load->view("blog/template_name");
Chú ý rằng: chúng ta không điền phần mở roonjgh .php cho tên file template, codeigniter sẽ làm cho bạn.
Một điều nữa, tham số thứ hai là tùy chọn không bắt buộc. Nếu bạn có dữ liệu cần truyền vào view thì chèn thêm tham số vào hàm view.
Và nhớ rằng tham số đó có kiểu dữ liệu mảng đầy đủ gồm cặp key-value (associated array). Ví dụ:
if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Test extends CI_Controller { public function index() { $data["name"] = "Md Ali Ahsan Rana"; $data["designation"] = "Software Engineer"; $this->load->view('test',$data); } }
Trong file lấy biến và hiển thị chúng bằng cách này:
<!-- File name: test.php --> <!-- Location: application/views/test.php --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Welcome to Test Page</title> </head> <body> <h2>My Name is <?php echo $name; ?></h2> <h2>My Designation is <?php echo $designation; ?></h2> </body> </html>
Lưu ý: biến $data được tách thành các biến với tên và giá trị tương ứng là giá trị phần tử của mảng.
Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể nhận được sự trợ giúp trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype