เส้นทาง CodeIgniter: การกำหนดเส้นทาง URL พร้อมตัวอย่าง

เส้นทาง CodeIgniter คืออะไร?

เส้นทางมีหน้าที่รับผิดชอบในการตอบสนองต่อคำขอ URL การกำหนดเส้นทางจะจับคู่ URL กับเส้นทางที่กำหนดไว้ล่วงหน้า หากไม่พบเส้นทางที่ตรงกัน CodeIgniter จะส่งหน้าที่ไม่พบข้อยกเว้น

เส้นทางใน CodeIgniter ถูกกำหนดโดยใช้สูตรด้านล่าง:

example.com/Controller/Method/Parameter/

ที่นี่

  • คอนโทรลเลอร์ - ถูกแมปกับชื่อคอนโทรลเลอร์ที่ควรตอบสนองต่อ URL
  • วิธีการ – ถูกแมปกับวิธีการในตัวควบคุมที่ควรตอบสนองต่อคำขอ URI
  • พารามิเตอร์ – ส่วนนี้เป็นทางเลือก

ตัวอย่างเส้นทาง CodeIgniter

ตอนนี้เรามาดูการกำหนดเส้นทาง URL ที่ใช้งานได้จริงกัน CodeIgniter ตัวอย่าง.

ลองพิจารณา URL ต่อไปนี้ http://localhost:3000/contacts/edit/1

ที่นี่

  • ชื่อของผู้ควบคุมที่ตอบสนองต่อ URL ข้างต้นคือ "ผู้ติดต่อ"
  • วิธีการในผู้ติดต่อคลาสคอนโทรลเลอร์คือ "แก้ไข"
  • วิธีการแก้ไขยอมรับพารามิเตอร์ ในกรณีตัวอย่างของเรา ค่า "1" จะถูกส่งผ่านไปยังเมธอด

ต่อไปนี้เป็นข้อมูลโดยย่อเกี่ยวกับสิ่งที่เราวางแผนจะทำ:

  • การกำหนดเส้นทาง – การกำหนดเส้นทางมีหน้าที่รับผิดชอบในการตอบสนองต่อคำขอ URL การกำหนดเส้นทาง CodeIgniter จับคู่ URL กับเส้นทางที่กำหนดไว้ล่วงหน้า หากไม่พบเส้นทางที่ตรงกัน CodeIgniter จะส่งหน้าที่ไม่พบข้อยกเว้น
  • ตัวควบคุม – เส้นทางเชื่อมโยงกับตัวควบคุม ตัวควบคุมจะติดโมเดลและมุมมองเข้าด้วยกัน การขอข้อมูล/ตรรกะทางธุรกิจจากโมเดลและส่งคืนผลลัพธ์ผ่านการนำเสนอมุมมอง เมื่อ URL ถูกจับคู่กับเส้นทางใน CodeIgniter แล้ว URL นั้นจะถูกส่งต่อไปยังฟังก์ชันสาธารณะของคอนโทรลเลอร์ที่โต้ตอบกับแหล่งข้อมูล ตรรกะทางธุรกิจ และส่งคืนมุมมองที่แสดงผลลัพธ์
  • เข้าชม – มุมมองมีหน้าที่นำเสนอ มุมมองมักจะเป็นการผสมผสานระหว่าง HTML, CSS และ Javaต้นฉบับส่วนนี้เป็นส่วนรับผิดชอบในการแสดงหน้าเว็บให้ผู้ใช้ดู โดยทั่วไปข้อมูลที่แสดงมักจะดึงมาจากฐานข้อมูลหรือแหล่งข้อมูลอื่นที่มีอยู่

หากต้องการเรียนรู้วิธีนำเราเตอร์ไปใช้งานจริง เราจะถือว่าเรากำลังสร้างแอปพลิเคชันสำหรับจัดการรายละเอียดการติดต่อ ตารางต่อไปนี้แสดง URL ที่จะใช้งานด้วย

S / N URL เส้นทาง ตัวควบคุม วิธี
1 / $เส้นทาง['default_controller'] ยินดีต้อนรับ ดัชนี
2 /รายชื่อผู้ติดต่อ $เส้นทาง['ผู้ติดต่อ'] ติดต่อ ดัชนี
3 /ติดต่อ/สร้าง $เส้นทาง['สร้าง'] ติดต่อ สร้าง
4 /รายชื่อผู้ติดต่อ/แก้ไข/id $เส้นทาง['แก้ไข/:id'] ติดต่อ แก้ไข
5 /ผู้ติดต่อ/อัปเดต/id $เส้นทาง['อัพเดต/:id'] ติดต่อ ปรับปรุง
6 /รายชื่อผู้ติดต่อ/ลบ/รหัส $เส้นทาง['ลบ/:id'] ติดต่อ ลบ

เราจะสร้างเส้นทางของแอปพลิเคชันของเราตามตารางด้านบน เราได้กำหนด URL เส้นทาง CodeIgniter และแม็พกับชื่อคอนโทรลเลอร์และเมธอดที่เกี่ยวข้อง

การสร้างการกำหนดเส้นทาง URL สำหรับแอปพลิเคชัน

มาสร้าง CodeIgniter URL Routing สำหรับโปรเจ็กต์การสอนของเรากันดีกว่า

เปิด application/config/routes.php

ปรับเปลี่ยนเส้นทางให้ตรงกับต่อไปนี้

$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;

ที่นี่

  • $route['default_controller'] = 'ยินดีต้อนรับ'; กำหนดคอนโทรลเลอร์เริ่มต้นยินดีต้อนรับ
  • $route['contacts'] = 'รายชื่อผู้ติดต่อ'; กำหนดเส้นทางผู้ติดต่อซึ่งเรียกวิธีดัชนีในตัวควบคุมผู้ติดต่อ
  • $route['create'] = 'รายชื่อผู้ติดต่อ/สร้าง'; กำหนดเส้นทางที่สร้างซึ่งชี้ไปยังตัวควบคุมผู้ติดต่อและเรียกวิธีการสร้าง
  • $route['edit/:id'] = 'รายชื่อติดต่อ/แก้ไข'; กำหนดการแก้ไขเส้นทางซึ่งยอมรับพารามิเตอร์ของ id และชี้ไปที่วิธีการแก้ไขของตัวควบคุมผู้ติดต่อ
  • $route['update/:id'] = 'รายชื่อผู้ติดต่อ/อัพเดต'; กำหนดการอัปเดตเส้นทางซึ่งยอมรับพารามิเตอร์ของ id และชี้ไปที่วิธีการอัปเดตของคลาสผู้ติดต่อ
  • $route['delete/:id'] = 'รายชื่อติดต่อ/ลบ'; กำหนดเส้นทางลบซึ่งยอมรับพารามิเตอร์ของ id และชี้ไปที่วิธีการลบของตัวควบคุมผู้ติดต่อ

ตารางต่อไปนี้แสดง URL ที่เกี่ยวข้องซึ่งมาจากเส้นทางที่กำหนดไว้ข้างต้น

S / N เส้นทาง URL ที่สอดคล้องกัน
1 $route['default_controller'] = 'ยินดีต้อนรับ'; http://localhost:3000
2 $route['contacts'] = 'รายชื่อผู้ติดต่อ'; http://localhost:3000/contacts
3 $route['create'] = 'รายชื่อผู้ติดต่อ/สร้าง'; http://localhost:3000/contacts/create
4 $route['edit/:id'] = 'รายชื่อติดต่อ/แก้ไข'; http://localhost:3000/contacts/edit/1
5 $route['update/:id'] = 'รายชื่อผู้ติดต่อ/อัพเดต'; http://localhost:3000/contacts/update/1
6 $route['delete/:id'] = 'รายชื่อติดต่อ/ลบ'; http://localhost:3000/contacts/delete/1

ตอนนี้เราได้ครอบคลุมเส้นทางแล้ว มาสร้างตัวควบคุมผู้ติดต่อที่จะตอบสนองต่อการดำเนินการที่ระบุในเส้นทางกันดีกว่า

สร้างไฟล์เส้นทางใหม่ใน CodeIgniter เป็น Contacts.php ใน application/controllers/Contacts.php

เพิ่มโค้ดดังต่อไปนี้:

<?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');
    }
}

ที่นี่

  • ผู้ติดต่อคลาสขยาย CI_Controller {..} กำหนดคลาสคอนโทรลเลอร์ของเราและขยายคลาส CI_Controller ที่มาพร้อมกับ CodeIgniter
  • วิธีการที่กำหนดไว้ข้างต้นสอดคล้องกับเส้นทางที่เรากำหนดไว้ และวิธีที่มีพารามิเตอร์เช่นลบจะยอมรับพารามิเตอร์เป็น $id
  • สังเกตว่าฟังก์ชันโหลดสาม (3) มุมมอง ส่วนหัวและส่วนท้ายเป็นเรื่องธรรมดาสำหรับทุกวิธี มุมมองตรงกลางมีความเฉพาะเจาะจงมากกับการกระทำ เช่น ฟังก์ชันลบเพื่อลบ สร้างมุมมองสำหรับสร้างฟังก์ชัน ฯลฯ สิ่งสำคัญอีกประการหนึ่งที่ต้องจำไว้ก็คือ มุมมองต่างๆ จะถูกโหลดจากไดเร็กทอรีย่อยผู้ติดต่อ

มุมมอง CodeIgniter

เรายังคงต้องดำเนินการอีกขั้นหนึ่งก่อนจึงจะสามารถทดสอบเส้นทาง CodeIgniter ด้วยพารามิเตอร์ในเว็บเบราว์เซอร์ได้ มาสร้างมุมมองที่สอดคล้องกับวิธีการควบคุมข้างต้นกันดีกว่า

รูปภาพต่อไปนี้แสดงให้เห็นว่าแอปพลิเคชันของคุณจะมีลักษณะเป็นอย่างไร

มุมมอง CodeIgniter

สร้างไฟล์ต่อไปนี้ในแอปพลิเคชัน/มุมมอง

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

สร้างไดเร็กทอรีใหม่ของผู้ติดต่อใน view application/views/contacts

สร้างไฟล์ต่อไปนี้ภายใน

index.php
create.php
edit.php

โครงสร้างไฟล์ของคุณควรเป็นดังนี้

มุมมอง CodeIgniter

ตอนนี้มาอัปเดต 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>

ที่นี่

  • โค้ด HTML ข้างต้นโหลด Burma CSS จากเครือข่าย CDN

ต่อไปนี้เป็นโค้ดสำหรับ footer.php

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

ตอนนี้มาเพิ่มโค้ดสำหรับไฟล์ index.php, edit.php และ create.php สำหรับผู้ติดต่อ

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>

คุณสามารถบันทึกการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นได้

เปิด URL ต่อไปนี้ในเว็บเบราว์เซอร์ของคุณ http://localhost:3000/contacts/

คุณสามารถคลิกที่ลิงก์ผู้ติดต่อใหม่และแก้ไขผู้ติดต่อและดูว่าเกิดอะไรขึ้น

สรุป

  • เส้นทางใน CI มีหน้าที่รับผิดชอบในการตอบสนองต่อคำขอ URL การกำหนดเส้นทางจะจับคู่ URL กับเส้นทางที่กำหนดไว้ล่วงหน้า หากไม่พบการจับคู่เส้นทาง CodeIgniter CodeIgniter จะส่งหน้าที่ไม่พบข้อยกเว้น
  • CI Routing มีหน้าที่รับผิดชอบในการตอบสนองต่อคำขอ URL การกำหนดเส้นทางจะจับคู่ URL กับเส้นทางที่กำหนดไว้ล่วงหน้า
  • ตัวควบคุมจะติดโมเดลและมุมมองเข้าด้วยกัน การขอข้อมูล/ตรรกะทางธุรกิจจากโมเดลและส่งคืนผลลัพธ์ผ่านการนำเสนอมุมมอง
  • ผู้ชมมีหน้าที่นำเสนอ มุมมองมักจะเป็นการผสมผสานระหว่าง HTML, CSS และ Javaต้นฉบับ
  • ในบทช่วยสอนนี้ เราได้เรียนรู้วิธีสร้างเส้นทางใน CodeIgniter สำหรับแอปพลิเคชันตัวอย่างในโลกแห่งความเป็นจริง และครอบคลุมพื้นฐานของการกำหนดเส้นทางที่คุณต้องรู้เพื่อเริ่มต้นการพัฒนา CodeIgniter