เส้นทาง 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 ด้วยพารามิเตอร์ในเว็บเบราว์เซอร์ได้ มาสร้างมุมมองที่สอดคล้องกับวิธีการควบคุมข้างต้นกันดีกว่า
รูปภาพต่อไปนี้แสดงให้เห็นว่าแอปพลิเคชันของคุณจะมีลักษณะเป็นอย่างไร
สร้างไฟล์ต่อไปนี้ในแอปพลิเคชัน/มุมมอง
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
โครงสร้างไฟล์ของคุณควรเป็นดังนี้
ตอนนี้มาอัปเดต 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