CodeIgniter - Các khái niệm cơ bản

Bộ điều khiển

Bộ điều khiển là một tệp lớp đơn giản. Như tên cho thấy, nó kiểm soát toàn bộ ứng dụng bằng URI.

Tạo bộ điều khiển

Đầu tiên, hãy truy cập application/controllersthư mục. Bạn sẽ tìm thấy hai tệp ở đó,index.htmlWelcome.php. Các tệp này đi kèm với CodeIgniter.

Giữ nguyên các tệp này. Tạo một tệp mới theo cùng một đường dẫn có tên “Test.php”. Viết mã sau vào tệp đó -

<?php 
   class Test extends CI_Controller {
  
      public function index() { 
         echo "Hello World!"; 
      } 
   } 
?>

Các Test lớp mở rộng một lớp dựng sẵn được gọi là CI_Controller. Lớp này phải được mở rộng bất cứ khi nào bạn muốn tạo lớp Bộ điều khiển của riêng mình.

Gọi người điều khiển

Bộ điều khiển trên có thể được gọi bằng URI như sau:

http://www.your-domain.com/index.php/test

Lưu ý từ “test”Trong URI ở trên sau index.php. Điều này cho biết tên lớp của bộ điều khiển. Như chúng tôi đã đưa ra tên của bộ điều khiển "Test", chúng tôi đang viết "test”Sau index.php. Tên lớp phải bắt đầu bằnguppercase letter nhưng chúng ta cần viết lowercase letterkhi chúng tôi gọi bộ điều khiển đó bằng URI. Cú pháp chung để gọi bộ điều khiển như sau:

http://www.your-domain.com/index.php/controller/method-name

Tạo và gọi phương thức xây dựng

Hãy để chúng tôi sửa đổi lớp trên và tạo một phương thức khác có tên là “hello”.

<?php 
   class Test extends CI_Controller {  
	
      public function index() { 
         echo "This is default function."; 
      } 
  
      public function hello() { 
         echo "This is hello function."; 
      } 
   } 
?>

Chúng ta có thể thực thi bộ điều khiển trên theo ba cách sau:

  • http://www.your-domain.com/index.php/test
  • http://www.your-domain.com/index.php/test/index
  • http://www.your-domain.com/index.php/test/hello

Sau khi truy cập URI đầu tiên trong trình duyệt, chúng tôi nhận được kết quả như thể hiện trong hình bên dưới. Như bạn có thể thấy, chúng tôi đã có đầu ra của phương thức “index”, Ngay cả khi chúng tôi không chuyển tên của phương thức là URI. Chúng tôi chỉ sử dụng tên bộ điều khiển trong URI. Trong những tình huống như vậy, CodeIgniter gọi phương thức mặc định “index”.

Truy cập URI thứ hai trong trình duyệt, chúng tôi nhận được kết quả tương tự như trong hình trên. Ở đây, chúng ta đã chuyển tên của phương thức sau tên của bộ điều khiển trong URI. Như tên của phương pháp là “index”, Chúng tôi đang nhận được cùng một sản lượng.

Truy cập URI thứ ba trong trình duyệt, chúng tôi nhận được kết quả như thể hiện trong hình dưới đây. Như bạn có thể thấy, chúng tôi đang nhận được đầu ra của phương pháp “hello"Bởi vì chúng tôi đã vượt qua"hello"Là tên phương thức, sau tên của bộ điều khiển"test”Trong URI.

Những điểm cần nhớ

  • Tên của lớp bộ điều khiển phải bắt đầu bằng một chữ cái viết hoa.

  • Bộ điều khiển phải được gọi bằng chữ thường.

  • Không sử dụng cùng tên của phương thức với lớp cha của bạn, vì nó sẽ ghi đè chức năng của lớp cha.

Lượt xem

Đây có thể là một trang web đơn giản hoặc phức tạp, có thể được gọi bởi bộ điều khiển. Trang web có thể chứa đầu trang, chân trang, thanh bên, v.v. Không thể gọi trực tiếp chế độ xem. Hãy để chúng tôi tạo một khung nhìn đơn giản. Tạo một tệp mới trongapplication/views với tên “test.php”Và sao chép đoạn mã đã cho bên dưới vào tệp đó.

<!DOCTYPE html> 
<html lang = "en"> 

   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter View Example</title> 
   </head>
	
   <body> 
      CodeIgniter View Example 
   </body>
	
</html>

Thay đổi mã của application/controllers/test.php như hình dưới đây.

Đang tải chế độ xem

Chế độ xem có thể được tải theo cú pháp sau:

$this->load->view('name');

Trong đó tên là tệp dạng xem, đang được hiển thị. Nếu bạn đã định lưu tệp xem trong thư mục nào đó thì bạn có thể sử dụng cú pháp sau:

$this->load->view('directory-name/name');

Không cần thiết phải chỉ định phần mở rộng là php, trừ khi một cái gì đó khác ngoài .php được sử dụng.

Phương thức index () đang gọi phương thức view và chuyển “test” làm đối số cho phương thức view () bởi vì chúng tôi đã lưu trữ mã hóa html trong “test.php”Tập tin dưới application/views/test.php.

<?php 
   class Test extends CI_Controller { 
	
      public function index() { 
         $this->load->view('test'); 
      } 
   } 
?>

Đây là đầu ra của đoạn mã trên -

Lưu đồ sau đây minh họa cách mọi thứ hoạt động -

Mô hình

Các lớp mô hình được thiết kế để làm việc với thông tin trong cơ sở dữ liệu. Ví dụ: nếu bạn đang sử dụng CodeIgniter để quản lý người dùng trong ứng dụng của mình thì bạn phải có lớp mô hình, lớp này chứa các chức năng chèn, xóa, cập nhật và truy xuất dữ liệu của người dùng.

Tạo lớp mô hình

Các lớp mô hình được lưu trữ trong application/modelsdanh mục. Đoạn mã sau đây cho thấy cách tạo lớp mô hình trong CodeIgniter.

<?php 
   Class Model_name extends CI_Model { 
	
      Public function __construct() { 
         parent::__construct(); 
      } 
   } 
?>

Trong đó Model_name là tên của lớp mô hình mà bạn muốn cung cấp. Mỗi lớp mô hình phải kế thừa lớp CI_Model của CodeIgniter. Chữ cái đầu tiên của lớp mô hình phải được viết hoa. Sau đây là mã cho lớp mô hình của người dùng.

<?php 
   Class User_model extends CI_Model {
	
      Public function __construct() { 
         parent::__construct(); 
      } 
		
   } 
?>

Lớp mô hình trên phải được lưu dưới dạng User_model.php. Tên lớp và tên tệp phải giống nhau.

Đang tải mô hình

Mô hình có thể được gọi trong bộ điều khiển. Mã sau có thể được sử dụng để tải bất kỳ mô hình nào.

$this->load->model('model_name');

Trong đó model_name là tên của mô hình sẽ được tải. Sau khi tải mô hình, bạn có thể chỉ cần gọi phương thức của nó như hình dưới đây.

$this->model_name->method();

Tự động tải mô hình

Có thể có những tình huống mà bạn muốn một số lớp mô hình trong suốt ứng dụng của mình. Trong những tình huống như vậy, sẽ tốt hơn nếu chúng ta tự động tải nó.

/*
| ---------------------------------------------------------------
|  Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
|   $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|  
|   $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();

Như trong hình trên, hãy chuyển tên của mô hình trong mảng mà bạn muốn tự động tải và nó sẽ được tự động tải, trong khi hệ thống đang ở trạng thái khởi tạo và có thể truy cập được trong toàn bộ ứng dụng.

Người trợ giúp

Như tên cho thấy, nó sẽ giúp bạn xây dựng hệ thống của mình. Nó được chia thành các chức năng nhỏ để phục vụ các chức năng khác nhau. Một số trợ giúp có sẵn trong CodeIgniter, được liệt kê trong bảng dưới đây. Chúng tôi cũng có thể xây dựng những người trợ giúp của riêng mình.

Người trợ giúp thường được lưu trữ trong system/helpers, hoặc là application/helpers directory. Trình trợ giúp tùy chỉnh được lưu trữ trongapplication/helpers thư mục và trình trợ giúp của hệ thống được lưu trữ trong system/helpersdanh mục. CodeIgniter sẽ xuất hiện đầu tiên trongapplication/helpers directory. Nếu thư mục không tồn tại hoặc trình trợ giúp được chỉ định không được định vị, CodeIgniter sẽ thay thế, tìm kiếm trong toàn cầu của bạnsystem/helpers/ directory. Mỗi trình trợ giúp, dù là trình trợ giúp tùy chỉnh hay trợ giúp hệ thống, đều phải được tải trước khi sử dụng.

SN Tên và mô tả của người trợ giúp
1

Array Helper

Tệp trợ giúp mảng chứa các hàm hỗ trợ làm việc với mảng.

2

CAPTCHA Helper

Tệp Trình trợ giúp CAPTCHA chứa các chức năng hỗ trợ tạo hình ảnh CAPTCHA.

3

Cookie Helper

Tệp Trình trợ giúp Cookie chứa các chức năng hỗ trợ làm việc với cookie.

4

Date Helper

Tệp Trình trợ giúp ngày chứa các hàm giúp bạn làm việc với ngày tháng.

5

Directory Helper

Tệp Trình trợ giúp Thư mục chứa các hàm hỗ trợ làm việc với các thư mục.

6

Download Helper

Trình trợ giúp Tải xuống cho phép bạn tải dữ liệu xuống máy tính để bàn của mình.

7

Email Helper

Trình trợ giúp Email cung cấp một số chức năng hỗ trợ để làm việc với Email. Để có giải pháp email mạnh mẽ hơn, hãy xem Lớp email của CodeIgniter.

số 8

File Helper

Tệp Trình trợ giúp tệp chứa các chức năng hỗ trợ làm việc với tệp.

9

Form Helper

Tệp Trình trợ giúp biểu mẫu chứa các hàm hỗ trợ làm việc với biểu mẫu.

10

HTML Helper

Tệp Trình trợ giúp HTML chứa các hàm hỗ trợ làm việc với HTML.

11

Inflector Helper

Tệp Inflector Helper chứa các hàm cho phép bạn thay đổi các từ thành số nhiều, số ít, trường hợp lạc đà, v.v.

12

Language Helper

Tệp Trình trợ giúp ngôn ngữ chứa các hàm hỗ trợ làm việc với các tệp ngôn ngữ.

13

Number Helper

Tệp Trình trợ giúp số chứa các hàm giúp bạn làm việc với dữ liệu số.

14

Path Helper

Tệp Trình trợ giúp đường dẫn chứa các hàm cho phép bạn làm việc với các đường dẫn tệp trên máy chủ.

15

Security Helper

Tệp Trình trợ giúp bảo mật chứa các chức năng liên quan đến bảo mật.

16

Smiley Helper

Tệp Smiley Helper chứa các chức năng cho phép bạn quản lý các biểu tượng mặt cười (biểu tượng cảm xúc).

17

String Helper

Tệp Trình trợ giúp chuỗi chứa các hàm hỗ trợ làm việc với chuỗi.

18

Text Helper

Tệp Trình trợ giúp Văn bản chứa các hàm hỗ trợ làm việc với văn bản.

19

Typography Helper

Tệp trợ giúp về kiểu chữ chứa các chức năng giúp định dạng văn bản của bạn theo những cách phù hợp về mặt ngữ nghĩa.

20

URL Helper

Tệp Trình trợ giúp URL chứa các hàm hỗ trợ làm việc với URL.

21

XML Helper

Tệp Trình trợ giúp XML chứa các hàm hỗ trợ làm việc với dữ liệu XML.

Đang tải người trợ giúp

Một trình trợ giúp có thể được tải như hình dưới đây -

$this->load->helper('name');

Trong đó tên là tên của người trợ giúp. Ví dụ: nếu bạn muốn tải Trình trợ giúp URL, thì nó có thể được tải dưới dạng:

$this->load->helper('url');

định tuyến

CodeIgniter có hệ thống định tuyến URI thân thiện với người dùng để bạn có thể dễ dàng định tuyến lại URL. Thông thường, có một mối quan hệ 1-1 giữa một chuỗi URL và lớp / phương thức điều khiển tương ứng của nó. Các phân đoạn trong URI thường tuân theo mẫu này -

your-domain.com/class/method/id/
  • Các first segment đại diện cho lớp bộ điều khiển sẽ được gọi.

  • Các second segment đại diện cho hàm lớp hoặc phương thức cần được gọi.

  • Các thirdvà bất kỳ phân đoạn bổ sung nào, đại diện cho ID và bất kỳ biến nào sẽ được chuyển đến bộ điều khiển.

Trong một số trường hợp, bạn có thể muốn thay đổi cơ chế định tuyến mặc định này. CodeIgniter cung cấp phương tiện mà qua đó bạn có thể đặt các quy tắc định tuyến của riêng mình.

Tùy chỉnh quy tắc định tuyến

Có một tệp cụ thể mà bạn có thể xử lý tất cả những thứ này. Tệp được đặt tại application / config / route.php. Bạn sẽ tìm thấy một mảng có tên là $ route trong đó bạn có thể tùy chỉnh các quy tắc định tuyến của mình. Khóa trong mảng $ route sẽ quyết định định tuyến cái gì và giá trị sẽ quyết định định tuyến ở đâu. Có ba tuyến đường dành riêng trong CodeIgniter.

SN Các tuyến và mô tả dành riêng
1

$route['default_controller']

Tuyến đường này cho biết lớp bộ điều khiển nào nên được tải, nếu URI không chứa dữ liệu, đây sẽ là trường hợp mọi người tải URL gốc của bạn. Bạn nên có một lộ trình mặc định, nếu không, theo mặc định, một trang 404 sẽ xuất hiện. Chúng ta có thể đặt trang chủ của trang web tại đây để nó được tải theo mặc định.

2

$route['404_override']

Tuyến này cho biết lớp bộ điều khiển nào nên được tải nếu bộ điều khiển được yêu cầu không được tìm thấy. Nó sẽ ghi đè trang lỗi 404 mặc định. Nó sẽ không ảnh hưởng đếnshow_404() chức năng này sẽ tiếp tục tải mặc định error_404.php trong tập tin application/views/errors/error_404.php.

3

$route['translate_uri_dashes']

Rõ ràng bằng giá trị Boolean, đây không phải là một tuyến đường chính xác. Tùy chọn này cho phép bạn tự động thay thế dấu gạch ngang ('-') bằng dấu gạch dưới trong phân đoạn URI của bộ điều khiển và phương thức, do đó giúp bạn tiết kiệm các mục nhập định tuyến bổ sung nếu bạn cần làm điều đó. Điều này là bắt buộc vì dấu gạch ngang không phải là một lớp hoặc ký tự tên phương thức hợp lệ và sẽ gây ra lỗi nghiêm trọng nếu bạn cố gắng sử dụng nó.

Các tuyến đường có thể được tùy chỉnh bởi wildcards hoặc bằng cách sử dụng regular expressions nhưng hãy nhớ rằng các quy tắc định tuyến tùy chỉnh này phải xuất hiện sau các quy tắc dành riêng.

Ký tự đại diện

Chúng tôi có thể sử dụng hai ký tự đại diện như được giải thích bên dưới:

  • (:num) - Nó sẽ khớp với một phân đoạn chỉ chứa các số.

  • (:any) - Nó sẽ khớp với một đoạn có chứa bất kỳ ký tự nào.

Example

$route['product/:num']='catalog/product_lookup';

Trong ví dụ trên, nếu từ “sản phẩm” theo nghĩa đen được tìm thấy trong phân đoạn đầu tiên của URL và một số được tìm thấy trong phân đoạn thứ hai, thì lớp “danh mục” và phương thức “product_lookup” sẽ được sử dụng thay thế.

Biểu thức chính quy

Giống như các ký tự đại diện, chúng ta cũng có thể sử dụng các biểu thức chính quy trong $route array keyphần. Nếu bất kỳ URI nào phù hợp với biểu thức chính quy, thì nó sẽ được chuyển đến phần giá trị được đặt thành mảng $ route.

Example

$route['products/([a-z]+)/(\d+)']='$1/id_$2';

Trong ví dụ trên, một URI tương tự như products / shoes / 123 thay vào đó sẽ gọi là “shoes"Lớp điều khiển và"id_123" phương pháp.