CodeIgniter: Bắt đầu với một ví dụ đơn giản
Giới thiệu
CodeIgniter là một khung công tác PHP mạnh mẽ có thể giúp bạn tăng tốc độ phát triển các ứng dụng web của bạn . Nó có một dấu ấn hiệu suất nhỏ do cách tiếp cận module để tải các thư viện của nó và thực hiện một công việc tuyệt vời tách logic khỏi bản trình bày bằng cách sử dụng động Model-View-Controller (MVC).
Trong hướng dẫn này, bạn sẽ học cách tạo một ứng dụng rất đơn giản hiển thị nội dung từ database . Nó không nghĩa là cung cấp giải pháp để xây dựng CMS của bạn , mà là để minh họa cách CodeIgniter được dùng . Ngoài ra, nó tìm cách đưa vào thực tế một số bài học đã học trong bài viết trước và giả sử bạn đã cài đặt CodeIgniter trên môi trường phát triển của bạn và đã cấu hình nó như được mô tả trong hướng dẫn đầu tiên .
Kế hoạch
Trong bài viết này, bạn sẽ thấy cách sử dụng một số lớp và hàm của CodeIgniter để truy vấn một bảng database có chứa các mục tin tức và hiển thị chúng riêng lẻ trên trang. Đối với điều này, ta sẽ tạo Bộ điều khiển, Mô hình và Chế độ xem, cũng như database để lưu giữ thông tin (mặc dù phần sau cũng sẽ được giả định vì có nhiều tài nguyên có sẵn để bạn có thể trau dồi các kỹ năng MySQL của bạn ).
Các yêu cầu database như sau: một bảng được gọi là tin tức chứa 3 cột: id (chính và tự động tăng dần), tiêu đề và nội dung. Tất nhiên bạn có thể thêm nhiều hơn, nhưng điều này là đủ cho ví dụ. Và sau đó tạo một vài hàng trong bảng với một số mục tin tức giả. Bạn có thể sử dụng hướng dẫn tuyệt vời này để giúp bạn tạo database của bạn nếu bạn không biết cách. Ngoài ra, hãy đảm bảo bạn đã cấu hình CodeIgniter để sử dụng database này.
Ngươi mâu
Bây giờ ta đã cài đặt database đúng cách và CodeIgniter đã biết về nó, đã đến lúc tạo một lớp Model sẽ truy vấn nó để tìm thông tin. Điều hướng đến folder ứng dụng / mô hình của cài đặt CodeIgniter của bạn và tạo một file php mới có tên news_model.php (Bạn có thể đặt tên file theo ý mình). Thêm thẻ mở php vào đầu file và tạo lớp Model bằng cách mở rộng CI mặc định (hãy nhớ rằng tên lớp bắt đầu bằng chữ in hoa):
class News_model extends CI_Model { }
Bên trong lớp này, bạn phải tạo một hàm (được gọi là một phương thức) để truy vấn database . CodeIgniter sử dụng mẫu Active Record giúp làm việc với database rất dễ dàng. Tất cả những gì bạn phải làm là tải lớp database trong hàm khởi tạo (nếu bạn chưa tự động tải nó đã có trong file autoload.php trong folder ứng dụng / cấu hình ) và bạn đã sẵn sàng. Để tải nó, hãy dán hàm sau vào lớp:
public function __construct() { $this->load->database(); }
Điều này sẽ làm cho tất cả các phương thức trong lớp này sẽ có thể sử dụng các hàm database . Tiếp theo, bạn cần phương thức được đề cập ở trên trong lớp Model để đọc thông tin từ bảng database của bạn:
public function get_news($id) { if($id != FALSE) { $query = $this->db->get_where('news', array('id' => $id)); return $query->row_array(); } else { return FALSE; } }
Nó chỉ đơn giản là kiểm tra xem một ID được chuyển cho nó trước khi truy xuất từ bảng tin tức hàng có ID được truyền và trả về nó dưới dạng một mảng liên kết chứa tất cả các cột trong bảng. Nếu không có ID nào được chuyển, hàm sẽ trả về FALSE.
Vì vậy, đó sẽ chăm sóc của việc lấy thông tin. Bây giờ là lúc xử lý yêu cầu từ khách hàng yêu cầu thông tin này. Lưu file và thoát.
Bộ điều khiển
Điều hướng đến folder ứng dụng / bộ điều khiển và tạo một file php mới có tên news.php (Tên của file này phải tương ứng với tên của lớp bạn sắp cung cấp). Trong file , hãy bắt đầu lại bằng cách mở thẻ php và tạo lớp Bộ điều khiển theo phần mở rộng:
class News extends CI_Controller { }
Bây giờ đã đến lúc làm việc bên trong lớp này để xử lý các yêu cầu và hiển thị phần tin tức có liên quan. Tất cả những thứ nặng nhọc xảy ra trong lớp Model nên tất cả những gì ta phải làm ở đây là tải nó và chuyển nó vào đối số ID của mẩu tin ta muốn hiển thị. Vì vậy, hãy tạo một hàm có tên show () sẽ xử lý điều này:
public function show($id) { $this->load->model('news_model'); $news = $this->news_model->get_news($id); $data['title'] = $news['title']; $data['body'] = $news['body']; $this->load->view('news_article', $data); }
Phương thức này thực hiện như sau: dòng đầu tiên tải news_model mà ta vừa tạo. Cái thứ hai sử dụng nó và lưu trữ kết quả truy vấn (là một mảng kết hợp chứa tất cả các cột trong hàng) trong biến $ news . Dòng thứ ba và thứ tư lưu trữ trong mảng dữ liệu $ tiêu đề và nội dung của tin tức đã truy xuất và dòng thứ năm tải Chế độ xem mà ta muốn sử dụng để hiển thị chúng và chuyển thông tin đi cùng. Mỗi khóa trong mảng $ data sẽ đại diện cho một biến được in ra trong file Dạng xem. Vì vậy, hãy xem cách ta xây dựng điều đó.
Xem
Điều hướng đến folder application / views và tạo một file php có tên news_article.php (Tên này phải giống với tên bạn đã tải trong Bộ điều khiển. Lưu ý bạn không cần bao gồm phần mở rộng php khi tải nó ở đó.). Trong file này, hãy sao chép các dòng sau:
<?php print $title; ?><?php print $body; ?>
Như bạn thấy , $ title và các biến $ body đang được chuyển đến View từ Controller thông qua mảng $ data . Bạn có thể thêm tất cả các loại đánh dấu để hiển thị trang theo bất kỳ cách nào bạn muốn nhưng đối với mục đích của ta , thẻ H1 cho tiêu đề và một đoạn cho nội dung là đủ. Lưu file và trỏ trình duyệt của bạn đến Bộ điều khiển bạn vừa tạo:
http://example.com/news/show/1
Nếu trình duyệt thực hiện yêu cầu này, CodeIgniter bây giờ sẽ tìm kiếm một Bộ điều khiển có tên là news (trong file lớp php có tên news.php ), gọi một phương thức bên trong nó có tên show () và chuyển cho nó tham số 1. Sau đó, phương thức này sẽ tải news_model truy vấn database và trả về mẩu tin tức mà sau đó Bộ điều khiển chuyển đến Dạng xem để hiển thị. Rất đơn giản và logic. Nếu bạn truy cập http://example.com/news/show/2 , nó sẽ hiển thị mẩu tin tức có ID bằng 2.
Và đây bạn có nó: một ứng dụng cơ bản nhưng năng động, truy vấn database để tìm thông tin và hiển thị nó cho client . Đến đây bạn có thể hỏi, tại sao lại sử dụng 3 file và tất cả các chức năng và cấu hình này cho việc này? Chà câu trả lời cho điều này sẽ rõ ràng hơn khi bạn xây dựng các ứng dụng phức tạp mà lập trình chức năng trở nên khó quản lý và việc không sử dụng một khuôn khổ như CodeIgniter sẽ buộc bạn phải tự định nghĩa tất cả các thư viện này.
Các tin liên quan