Các tuyến CodeIgniter: Định tuyến URL bằng ví dụ

Các tuyến CodeIgniter là gì?

Các tuyến đường có trách nhiệm đáp ứng các yêu cầu URL. Định tuyến khớp URL với các tuyến được xác định trước. Nếu không tìm thấy tuyến đường nào phù hợp thì CodeIgniter sẽ đưa ra một trang không tìm thấy ngoại lệ.

Các tuyến trong CodeIgniter được xác định bằng công thức dưới đây:

example.com/Controller/Method/Parameter/

ĐÂY,

  • Bộ điều khiển - được ánh xạ tới tên bộ điều khiển sẽ phản hồi URL.
  • Phương thức - được ánh xạ tới phương thức trong bộ điều khiển sẽ đáp ứng yêu cầu URI.
  • Tham số - phần này là tùy chọn.

Ví dụ về lộ trình CodeIgniter

Bây giờ chúng ta hãy xem Định tuyến URL thực tế trong CodeIgniter thí dụ.

Hãy xem xét URL sau http://localhost:3000/contacts/edit/1

ĐÂY,

  • Tên của bộ điều khiển phản hồi URL trên là “danh bạ”
  • Phương thức trong lớp trình điều khiển Danh bạ là “chỉnh sửa”
  • Phương thức chỉnh sửa chấp nhận một tham số. Trong trường hợp ví dụ của chúng tôi, giá trị “1” được truyền cho phương thức.

Dưới đây là thông tin cơ bản ngắn gọn về những gì chúng tôi dự định thực hiện:

  • Định tuyến – định tuyến chịu trách nhiệm đáp ứng các yêu cầu URL. Định tuyến CodeIgniter khớp URL với các tuyến được xác định trước. Nếu không tìm thấy tuyến đường trùng khớp thì CodeIgniter sẽ đưa ra một ngoại lệ không tìm thấy trang.
  • Bộ điều khiển – các tuyến đường được liên kết với bộ điều khiển. Bộ điều khiển dán các mô hình và khung nhìn lại với nhau. Yêu cầu dữ liệu/logic nghiệp vụ từ mô hình và trả về kết quả thông qua bản trình bày dạng xem. Khi một URL đã được khớp với Tuyến trong CodeIgniter, nó sẽ được chuyển tiếp đến chức năng công khai của bộ điều khiển tương tác với nguồn dữ liệu, logic nghiệp vụ và trả về chế độ xem hiển thị kết quả.
  • Lượt xem – 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à JavaScript. Đây là bộ phận có nhiệm vụ hiển thị trang web tới người dùng. Thông thường, dữ liệu hiển thị thường được lấy từ cơ sở dữ liệu hoặc bất kỳ nguồn dữ liệu có sẵn nào khác.

Để tìm hiểu cách triển khai bộ định tuyến trên một dự án thực tế, chúng ta sẽ giả định rằng chúng ta đang tạo một ứng dụng để quản lý thông tin liên hệ. Bảng sau đây hiển thị các URL sẽ hoạt động.

S / N URL Route Người điều khiển Phương pháp
1 / $route['default_controller'] Chào mừng chỉ số
2 /liên lạc $route['contacts'] Liên hệ chỉ số
3 /liên hệ/tạo $route['tạo'] Liên hệ tạo
4 /danh bạ/chỉnh sửa/id $route['edit/:id'] Liên hệ chỉnh sửa
5 /danh bạ/cập nhật/id $route['update/:id'] Liên hệ cập nhật
6 /danh bạ/xóa/id $route['delete/:id'] Liên hệ xóa

Chúng tôi sẽ tạo các tuyến đường cho ứng dụng của mình dựa trên bảng trên. Chúng tôi đã xác định các URL, lộ trình CodeIgniter và ánh xạ chúng tới tên phương thức và bộ điều khiển tương ứng.

Tạo định tuyến URL cho ứng dụng

Hãy tạo Định tuyến URL CodeIgniter cho dự án hướng dẫn của chúng tôi

Mở ứng dụng/config/routes.php

Sửa đổi các tuyến đường để phù hợp với những điều sau đây

$route['default_controller'] = 'welcome';
$route['contacts'] = 'contacts';
$route['create'] = 'contacts/create';
$route['edit/:id'] = 'contacts/edit';
$route['update/:id'] = 'contacts/update';
$route['delete/:id'] = 'contacts/delete';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

ĐÂY,

  • $route['default_controller'] = 'chào mừng'; xác định bộ điều khiển mặc định Chào mừng.
  • $route['contacts'] = 'contacts'; xác định tuyến liên hệ gọi phương thức chỉ mục trong bộ điều khiển Danh bạ
  • $route['create'] = 'danh bạ/tạo'; xác định một tuyến tạo trỏ đến bộ điều khiển Danh bạ và gọi phương thức tạo.
  • $route['edit/:id'] = 'liên hệ/chỉnh sửa'; xác định chỉnh sửa tuyến đường chấp nhận tham số id và trỏ đến phương thức chỉnh sửa của bộ điều khiển Danh bạ
  • $route['update/:id'] = 'danh bạ/cập nhật'; định nghĩa một bản cập nhật tuyến đường chấp nhận tham số id và trỏ đến phương thức cập nhật của lớp Danh bạ.
  • $route['delete/:id'] = 'danh bạ/xóa'; xác định xóa tuyến chấp nhận tham số id và trỏ đến phương thức xóa của bộ điều khiển Danh bạ.

Bảng sau đây hiển thị các URL tương ứng có nguồn gốc từ các tuyến đường được xác định ở trên

S / N Route URL tương ứng
1 $route['default_controller'] = 'chào mừng'; http://localhost:3000
2 $route['contacts'] = 'contacts'; http://localhost:3000/contacts
3 $route['create'] = 'danh bạ/tạo'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'liên hệ/chỉnh sửa'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'danh bạ/cập nhật'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'danh bạ/xóa'; http://localhost:3000/contacts/delete/1

Bây giờ chúng ta đã bao quát xong các tuyến đường, hãy tạo bộ điều khiển Danh bạ sẽ phản hồi các hành động được chỉ định trong các tuyến đường.

Tạo một tệp Route mới trong CodeIgniter dưới dạng Contacts.php trong application/controllers/contacts.php

Thêm mã sau đây

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

class Contacts extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url');
    }

    public function index() {
        $this->load->view('header');
        $this->load->view('contacts/index');
        $this->load->view('footer');
    }

    public function create() {
        $this->load->view('header');
        $this->load->view('contacts/create');
        $this->load->view('footer');
    }

    public function edit($id) {
        $this->load->view('header');
        $this->load->view('contacts/edit');
        $this->load->view('footer');
    }

    public function update($id) {
        $this->load->view('header');
        $this->load->view('contacts/update');
        $this->load->view('footer');
    }

    public function delete($id) {
        $this->load->view('header');
        $this->load->view('contacts/delete');
        $this->load->view('footer');
    }
}

ĐÂY,

  • Danh bạ lớp mở rộng CI_Controller {..} xác định lớp trình điều khiển của chúng tôi và mở rộng lớp CI_Controller đi kèm với CodeIgniter.
  • Các phương thức được xác định ở trên tương ứng với các tuyến chúng tôi đã xác định và những phương thức có tham số như xóa chấp nhận tham số $id
  • Lưu ý các hàm tải ba (3) lượt xem. Đầu trang và chân trang là chung cho tất cả các phương pháp. Chế độ xem ở giữa rất cụ thể cho hành động, tức là xóa để xóa chức năng tạo chế độ xem để tạo chức năng, v.v. Một điều quan trọng khác cần nhớ là các chế độ xem được tải từ thư mục con danh bạ.

Lượt xem CodeIgniter

Chúng tôi vẫn cần thực hiện thêm một bước nữa trước khi có thể kiểm tra các Tuyến CodeIgniter bằng Thông số trong trình duyệt web. Hãy tạo các khung nhìn tương ứng với các phương thức điều khiển ở trên.

Hình ảnh sau đây cho thấy ứng dụng của bạn sẽ trông như thế nào

Lượt xem CodeIgniter

Tạo các tập tin sau trong application/views

header.php – this file will contain contacts app menu and the header
footer.php – this files will contain the application footer.

Tạo một thư mục liên hệ mới trong ứng dụng xem/lượt xem/danh bạ

Tạo các tập tin sau bên trong

index.php
create.php
edit.php

Cấu trúc tập tin của bạn phải như sau

Lượt xem CodeIgniter

Bây giờ hãy cập nhật header.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>CodeIgniter Routes</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">CI Contacts v1</h1>
                <h2 class="subtitle">CodeIgniter contacts management app</h2>
                <div class="columns">
                    <div class="column is-one-quarter">
                        <aside class="menu">
                            <p class="menu-label">
                                General
                            </p>
                            <ul class="menu-list">
                                <li><a class="is-active" href="#">Dashboard</a></li>
                                <li><a href="<?=site_url('contacts/create')?>">New Contact</a></li>
                                <li><a href="<?=site_url('contacts/edit/1')?>">Edit Contacts</a></li>
                            </ul>
                            <p class="menu-label">
                                Settings
                            </p>
                            <ul class="menu-list">
                                <li><a href="#">SMS</a></li>
                                <li><a href="#">Email</a></li>
                            </ul>
                        </aside>
                    </div>

ĐÂY,

  • Mã HTML ở trên tải CSS Miến Điện từ mạng CDN.

Sau đây là mã cho footer.php

            </div>
            </div>
        </section>
    </body>
</html>

Bây giờ chúng ta hãy thêm mã cho các tệp index.php, edit.php và create.php cho các liên hệ.

index.php
<div class="column">Index content goes here...</div>
edit.php
<div class="column">Edit content goes here...</div>
create.php
<div class="column">Create content goes here...</div>

Bạn có thể lưu tất cả những thay đổi đã được thực hiện.

Mở URL sau trong trình duyệt web của bạn http://localhost:3000/contacts/

bạn có thể nhấp vào liên kết Liên hệ Mới và Chỉnh sửa Liên hệ và xem điều gì sẽ xảy ra

Tổng kết

  • Các tuyến trong CI chịu trách nhiệm đáp ứng các yêu cầu URL. Định tuyến khớp URL với các tuyến được xác định trước. Nếu không tìm thấy Lộ trình CodeIgniter phù hợp thì CodeIgniter sẽ đưa ra một trang không tìm thấy ngoại lệ.
  • CI Routing chịu trách nhiệm đáp ứng các yêu cầu URL. Định tuyến khớp URL với các tuyến được xác định trước.
  • Bộ điều khiển dán các mô hình và khung nhìn lại với nhau. Yêu cầu dữ liệu/logic nghiệp vụ từ mô hình và trả về kết quả thông qua bản trình bày dạng xem.
  • Lượt xem 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à JavaKịch bản.
  • Trong hướng dẫn này, chúng ta đã học cách tạo Tuyến đường trong CodeIgniter cho một ứng dụng mẫu trong thế giới thực và đề cập đến những kiến ​​thức cơ bản về định tuyến mà bạn cần biết để bắt đầu phát triển CodeIgniter.