CodeBộ điều khiển Igniter, Định tuyến chế độ xem: Học qua ví dụ

⚡ Tóm tắt thông minh

T CodeVí dụ Igniter này xây dựng một ứng dụng nhỏ để minh họa cách định tuyến, bộ điều khiển và giao diện người dùng hoạt động cùng nhau. Một dự án mới được tạo bằng Composer, các tuyến đường được ánh xạ. URLCác phương thức được gán cho bộ điều khiển, và mỗi phương thức tải một khung nhìn trả về HTML cho trình duyệt.

  • 🧭 Định tuyến: Các tuyến đường phù hợp với URL đến một phương pháp điều khiển và một phương pháp không khớp URL Gây ra lỗi "không tìm thấy trang".
  • 🎛️ Bộ điều khiển: Phương thức điều khiển (controller method) phản hồi lại một tuyến đường (route), yêu cầu dữ liệu và trả về một giao diện (view).
  • 🖼️ Lượt xem: Một view kết hợp HTML, CSS và... JavaĐoạn mã để hiển thị kết quả cho người dùng.
  • 📦 Thiết lập dự án: Composer tạo dự án và máy chủ PHP tích hợp sẵn sẽ chạy dự án đó cục bộ.
  • 🏠 Tuyến đường mặc định: default_controller thiết lập trang chủ, còn 404_override thiết lập trang lỗi tùy chỉnh.
  • Tuyến đường tùy chỉnh: Một đường dẫn như about-us sẽ được ánh xạ tới phương thức about_us của bộ điều khiển Welcome.
  • 🔁 Dòng chảy đầy đủ: URL Chuyển hướng đến bộ điều khiển để hiển thị, sau đó chuyển tiếp HTML trở lại trình duyệt.

CodeBộ điều khiển và giao diện của bộ đánh lửa

Trong hướng dẫn này, bạn sẽ học các chủ đề sau:

  • Định tuyến – bộ định tuyến chịu trách nhiệm phản hồi URL yêu cầu. Định tuyến phù hợp với URL đến các tuyến đường được xác định trước. Nếu không tìm thấy tuyến đường phù hợp, CodeIgniter báo lỗi "không tìm thấy trang".
  • Bộ điều khiển – Các tuyến đường được liên kết với các bộ điều khiển. Các bộ điều khiển kết nối các mô hình và giao diện người dùng lại với nhau. Chúng yêu cầu dữ liệu và logic nghiệp vụ từ mô hình và trả về kết quả trong phần trình bày của giao diện người dùng. Một khi... URL Khi dữ liệu được khớp với một tuyến đường, nó sẽ được chuyển tiếp đến hàm công khai của bộ điều khiển. Hàm này tương tác với nguồn dữ liệu và logic nghiệp vụ, sau đó trả về giao diện hiển thị kết quả.
  • Cảnh Quan – quan điểm có trách nhiệm trình bày. Một khung nhìn thường là sự kết hợp của HTML, CSS và JavaPhần mã lệnh (Script) chịu trách nhiệm hiển thị trang web cho người dùng. Thông thường, dữ liệu hiển thị được lấy từ cơ sở dữ liệu hoặc nguồn dữ liệu khác có sẵn.

Cách tạo mới CodeDự án Igniter

Chúng ta sẽ sử dụng Composer để tạo dự án mới. Chúng ta sẽ sử dụng máy chủ tích hợp sẵn của PHP, vì vậy không cần thiết phải cài đặt thêm phần mềm nào khác. ApacheTrong hướng dẫn này, chúng ta sẽ sử dụng... Windows Hệ điều hành, vì vậy chúng tôi đã tạo một thư mục Sites trên ổ C. Bạn có thể sử dụng bất kỳ thư mục nào phù hợp với mình.

Mở cửa sổ dòng lệnh hoặc terminal và chạy lệnh sau:

cd C:\Sites

Bây giờ chúng ta sẽ tạo một CodeDự án Igniter sử dụng Composer. Chạy lệnh sau:

composer create-project CodeIgniter/framework ci-app

Đây:

  • Lệnh trên tạo ra một cái mới CodeTôi đã sao chép dự án Igniter phiên bản 3, sử dụng bản phát hành ổn định mới nhất (3.1.9 tại thời điểm viết bài), vào thư mục có tên là ci-app.

Khi lệnh hoàn tất quá trình thực thi, bạn sẽ thấy kết quả tương tự như sau trong cửa sổ terminal:

Nhà soạn nhạc đang tạo một cái mới CodeDự án Igniter

Chạy lệnh sau để truy cập vào thư mục dự án mới được tạo ci-app:

cd ci-app

Bây giờ hãy khởi động máy chủ web tích hợp sẵn của PHP:

php -S localhost:3000

Đây:

  • Lệnh trên khởi động máy chủ PHP tích hợp sẵn đang chạy trên cổng 3000.

Mở trình duyệt web và truy cập vào địa chỉ sau: URL: http://localhost:3000/. Bạn sẽ nhận được trang sau:

CodeTrang chào mừng mặc định của Igniter

Nếu bạn thấy được trang hiển thị ở trên, xin chúc mừng, bạn đã cài đặt thành công. CodeIgniteTrang này được hiển thị bởi view nằm trong application/views/welcome_message.php, và controller chịu trách nhiệm nằm trong application/controllers/Welcome.php.

CodeĐịnh tuyến Igniter

Hiện tại, ứng dụng của chúng tôi chỉ có một chức năng duy nhất. URLĐây là trang chủ. Trong phần này, chúng ta sẽ tùy chỉnh phần trang chủ và tạo một số tính năng mới. URLnhững thứ đáp ứng các yêu cầu khác nhau.

Chúng ta hãy bắt đầu với tuyến đường trang chủ. Mở tệp routes tại đường dẫn bên dưới:

application/config/routes.php

Bạn sẽ thấy nội dung sau:

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Đây:

  • $route['default_controller'] = 'welcome'; định nghĩa bộ điều khiển mặc định phản hồi các yêu cầu URI.
  • `$route['404_override'] = ”;` cho phép bạn định nghĩa một tuyến đường tùy chỉnh cho lỗi 404. Lỗi 404 xảy ra khi không tìm thấy trang. CodeIgniter có trình xử lý lỗi mặc định, nhưng bạn có thể tự định nghĩa trình xử lý riêng nếu muốn.
  • `$route['translate_uri_dashes'] = FALSE;` cho phép bạn chuyển đổi dấu gạch ngang thành dấu gạch dưới. Chúng ta sẽ thảo luận về tùy chọn này khi xem xét cách thức hoạt động của các tuyến đường trong... CodeBộ đánh lửa.

Bây giờ chúng ta hãy xem phương thức điều khiển chịu trách nhiệm hiển thị trang chủ mà chúng ta đã thấy khi mở ứng dụng. http://localhost:3000/Mở tệp sau:

application/controllers/Welcome.php

Bạn sẽ thấy đoạn mã sau:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

public function index()
{
$this->load->view('welcome_message');
}
}

Đây:

  • defined('BASEPATH') OR exit('No direct script access allowed'); bảo vệ chống lại việc truy cập trực tiếp vào lớp controller mà không thông qua tệp index.php. Trong mô hình MVC, tất cả các yêu cầu đều có một điểm truy cập duy nhất, điều này giúp ngăn chặn việc truy cập trực tiếp vào lớp controller mà không thông qua tệp index.php. CodeIgniter là index.php. Đoạn mã này chặn tất cả các yêu cầu không đến từ index.php.
  • class Welcome extends CI_Controller {…} định nghĩa một lớp Welcome kế thừa từ lớp cha CI_Controller.
  • Hàm public function index() định nghĩa một hàm công khai được gọi mặc định khi bạn mở trang chủ.
  • $this->load->view('welcome_message'); tải trang hiển thị welcome_message, nằm trong thư mục application/views/welcome_message.php.

Cho đến nay, chúng ta mới chỉ khám phá những gì có sẵn bên trong hộp sản phẩm. CodeIgniter. Bây giờ chúng ta hãy thực hiện một số thay đổi. Chúng ta sẽ tạo trang chủ riêng và thay thế trang mặc định. Tạo một tệp mới tại application/views/home.php và thêm đoạn mã sau:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello CodeIgniter!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">
CodeIgniter Hello World
</h1>
</div>
</section>
</body>
</html>

Đây: Đoạn mã HTML trên tải khung CSS Bulma và Font Awesome từ CDN và tạo ra một tài liệu HTML rất cơ bản. Nó áp dụng một quy tắc CSS đơn giản từ khung CSS Bulma.

Mở phần sau URL trong trình duyệt của bạn: http://localhost:3000/. Bạn sẽ thấy như sau:

Tuỳ chỉnh CodeTrang chủ Igniter

Tuyệt vời, chúng ta đã sửa đổi trang chủ thành công. Tiếp theo, hãy định nghĩa đường dẫn của chúng ta. Giả sử ứng dụng của chúng ta cũng cần hiển thị trang giới thiệu.

Tạo lộ trình

Mở tệp định tuyến application/config/routes.php và thêm tuyến đường sau:

$route['about-us'] = 'welcome/about_us';

Đây:

  • Khi một du khách ghé thăm URL /về chúng tôi, chúng tôi hướng dẫn CodeIgniter sẽ tìm kiếm bộ điều khiển Welcome và thực thi phương thức about_us.

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

Bây giờ chúng ta hãy định nghĩa phương thức điều khiển about_us. Mở tệp application/controllers/Welcome.php và thêm phương thức sau:

public function about_us(){
$this->load->view('about_us');
}

Đây:

  • Đoạn mã trên định nghĩa một hàm có tên là about_us và tải một view có tên là about_us.

Tạo chế độ xem

Bây giờ chúng ta hãy tạo giao diện mà chúng ta vừa đề cập. Tạo một tệp mới có tên about_us.php trong thư mục application/views/about_us.php và thêm đoạn mã sau:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>About CodeIgniter!</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">
About us yap...
</h1>
</div>
</section>
</body>
</html>

Chúng ta đã sẵn sàng. Hãy mở những thứ sau đây. URL trong trình duyệt web của bạn: http://localhost:3000/index.php/about-us. Bạn sẽ thấy trang sau:

CodeTrang giới thiệu về Igniter

Nếu bạn có thể nhìn thấy trang ở trên, xin chúc mừng, bạn đã tạo thành công một ứng dụng đơn giản. CodeBộ đánh lửa.

Câu Hỏi Thường Gặp

Bản đồ nhập tuyến đường URL phân đoạn thành một bộ điều khiển và phương thức, chẳng hạn như 'welcome/about_us'. Khi đó URL được yêu cầu, CodeIgniter chạy phương thức được đặt tên, phương thức này tải và trả về một view.

Nó thiết lập bộ điều khiển xử lý thư mục gốc của trang web khi không có chỉ định cụ thể nào. URL được cung cấp. Trong ví dụ này, 'welcome' có nghĩa là trang chủ được phục vụ bởi phương thức index của bộ điều khiển Welcome.

Không. Máy chủ PHP tích hợp sẵn, được khởi chạy bằng lệnh `php -S localhost:3000`, là đủ để chạy ví dụ cục bộ. Apache hoặc Nginx chỉ cần thiết cho việc triển khai trên môi trường sản xuất.

Đúng vậy. Từ mô tả của một trang, AI có thể viết ra mục nhập tuyến đường, phương thức điều khiển và khung nhìn phù hợp, v.v.ping Tên phải nhất quán. Kiểm tra đường dẫn so với đường dẫn của bạn. CodePhiên bản Igniter.

Ví dụ này sử dụng CodeIgniter 3 lưu trữ các bộ điều khiển và giao diện người dùng trong thư mục application/. CodeIgniter 4 đã tái cấu trúc các thư mục và không gian tên, do đó đường dẫn và cú pháp sẽ khác nhau trong các dự án mới hơn.

Tóm tắt bài viết này với: