Codeตัวควบคุม Igniter และการกำหนดเส้นทางมุมมอง: เรียนรู้จากตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🧭 สายงานการผลิต: เส้นทางตรงกับ URL ไปยังวิธีการควบคุม และสิ่งที่ไม่ตรงกัน URL ทำให้เกิดข้อผิดพลาด "ไม่พบหน้าเว็บ"
  • 🎛️ ควบคุม: เมธอดของคอนโทรลเลอร์จะตอบสนองต่อเส้นทาง (route) ร้องขอข้อมูล และส่งคืนมุมมอง (view)
  • 🖼️ Views: มุมมอง (View) คือการผสมผสานระหว่าง HTML, CSS และ Javaสคริปต์สำหรับแสดงผลลัพธ์ให้ผู้ใช้เห็น
  • 📦 การตั้งค่าโครงการ: Composer จะสร้างโปรเจ็กต์ และเซิร์ฟเวอร์ PHP ในตัวจะรันโปรเจ็กต์นั้นในเครื่อง
  • 🏠 เส้นทางเริ่มต้น: default_controller ใช้สำหรับกำหนดหน้าแรก และ 404_override ใช้สำหรับกำหนดหน้าแสดงข้อผิดพลาดแบบกำหนดเอง
  • เส้นทางที่กำหนดเอง: เส้นทางเช่น about-us จะเชื่อมโยงไปยังเมธอด about_us ของคอนโทรลเลอร์ Welcome
  • 🔁 การไหลเต็มที่: URL เพื่อกำหนดเส้นทางไปยังคอนโทรลเลอร์เพื่อแสดงผล จากนั้นส่ง HTML กลับไปยังเบราว์เซอร์

Codeตัวควบคุมและมุมมองของ Igniter

ในบทเรียนนี้ คุณจะได้เรียนรู้หัวข้อต่อไปนี้:

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

วิธีการสร้างใหม่ Codeโครงการ Igniter

เราจะใช้ Composer เพื่อสร้างโปรเจ็กต์ใหม่ เราจะใช้เซิร์ฟเวอร์ในตัวของ PHP ดังนั้นจึงไม่จำเป็นต้องมีซอฟต์แวร์เพิ่มเติม เช่น อาปาเช่ในบทช่วยสอนนี้ เราจะใช้ Windows เนื่องจากระบบปฏิบัติการของเรา เราได้สร้างโฟลเดอร์ Sites ไว้ในไดรฟ์ C แล้ว คุณสามารถใช้ไดเร็กทอรีใดก็ได้ที่เหมาะสมกับคุณ

เปิดหน้าต่างคำสั่งหรือเทอร์มินัล แล้วรันคำสั่งต่อไปนี้:

cd C:\Sites

ตอนนี้เราจะสร้าง Codeสร้างโปรเจ็กต์ Igniter โดยใช้ Composer รันคำสั่งต่อไปนี้:

composer create-project CodeIgniter/framework ci-app

ที่นี่:

  • คำสั่งข้างต้นสร้างสิ่งใหม่ Codeโปรเจ็กต์ Igniter เวอร์ชัน 3 โดยใช้เวอร์ชันเสถียรล่าสุด (3.1.9 ณ เวลาที่เขียน) ลงในไดเร็กทอรีชื่อ ci-app

เมื่อคำสั่งทำงานเสร็จสิ้น คุณควรเห็นผลลัพธ์ที่คล้ายกับข้อความต่อไปนี้ในเทอร์มินัล:

นักแต่งเพลงกำลังสร้างผลงานใหม่ Codeโครงการ Igniter

เรียกใช้คำสั่งต่อไปนี้เพื่อไปยังไดเร็กทอรีโปรเจ็กต์ ci-app ที่สร้างขึ้นใหม่:

cd ci-app

ตอนนี้ให้เริ่มใช้งานเว็บเซิร์ฟเวอร์ PHP ในตัว:

php -S localhost:3000

ที่นี่:

  • คำสั่งข้างต้นจะเริ่มต้นเซิร์ฟเวอร์ PHP ในตัวที่ทำงานบนพอร์ต 3000

เปิดเว็บเบราว์เซอร์และเข้าชมเว็บไซต์ต่อไปนี้ URL: http://localhost:3000/คุณจะได้รับหน้าต่อไปนี้:

Codeหน้าต้อนรับเริ่มต้นของ Igniter

หากคุณเห็นหน้าเว็บด้านบน ขอแสดงความยินดี คุณติดตั้งสำเร็จแล้ว Codeเครื่องทำให้ลุกไหม้หน้าเว็บนี้แสดงผลโดยวิวที่อยู่ใน application/views/welcome_message.php และคอนโทรลเลอร์ที่รับผิดชอบอยู่ที่ application/controllers/Welcome.php

Codeการกำหนดเส้นทาง Igniter

ในขณะนี้ แอปพลิเคชันของเรามีเพียงฟังก์ชันเดียว URLซึ่งก็คือหน้าแรก ในส่วนนี้ เราจะปรับแต่งหน้าแรกและสร้างส่วนใหม่ๆ ขึ้นมา URLที่ตอบสนองต่อคำขอที่แตกต่างกัน

มาเริ่มกันที่เส้นทางของหน้าแรกกันก่อน เปิดไฟล์ routes ได้ที่พาธด้านล่างนี้:

application/config/routes.php

คุณควรเห็นเนื้อหาต่อไปนี้:

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

ที่นี่:

  • $route['default_controller'] = 'welcome'; กำหนดคอนโทรลเลอร์เริ่มต้นที่ตอบสนองต่อคำขอ URI
  • $route['404_override'] = ”; อนุญาตให้คุณกำหนดเส้นทางที่กำหนดเองสำหรับข้อผิดพลาด 404 ข้อผิดพลาด 404 เกิดขึ้นเมื่อไม่พบหน้าเว็บ CodeIgniter มีตัวจัดการข้อผิดพลาดเริ่มต้นให้ แต่คุณสามารถกำหนดเองได้หากต้องการ
  • $route['translate_uri_dashes'] = FALSE; อนุญาตให้คุณแปลงขีดกลางเป็นขีดล่าง เราจะพูดถึงตัวเลือกนี้เมื่อเราดูวิธีการทำงานของเส้นทางในเวอร์ชันต่อไป Codeตัวจุดไฟ

ต่อไปนี้เราจะมาดูเมธอดคอนโทรลเลอร์ที่รับผิดชอบในการแสดงหน้าแรกที่เราเห็นเมื่อเปิดโปรแกรมขึ้นมา http://localhost:3000/เปิดไฟล์ต่อไปนี้:

application/controllers/Welcome.php

คุณควรเห็นโค้ดต่อไปนี้:

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

class Welcome extends CI_Controller {

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

ที่นี่:

  • `defined('BASEPATH') OR exit('No direct script access allowed');` ป้องกันการเข้าถึงคลาสคอนโทรลเลอร์โดยตรงโดยไม่ผ่านไฟล์ index.php ในรูปแบบ MVC คำขอทั้งหมดจะมีจุดเริ่มต้นเพียงจุดเดียว ซึ่งสำหรับ CodeIgniter คือไฟล์ index.php โค้ดนี้จะบล็อกคำขอทั้งหมดที่ไม่ผ่านไฟล์ index.php
  • class Welcome extends CI_Controller {…} กำหนดคลาส Welcome ที่สืบทอดมาจากคลาสแม่ CI_Controller
  • public function index() กำหนดฟังก์ชันสาธารณะที่จะถูกเรียกใช้โดยค่าเริ่มต้นเมื่อคุณเปิดหน้าแรก
  • $this->load->view('welcome_message'); โหลดวิว welcome_message ซึ่งอยู่ใน application/views/welcome_message.php

จนถึงตอนนี้ เราได้สำรวจเฉพาะสิ่งที่มีมาให้ในกล่องเท่านั้น CodeIgniter ตอนนี้เรามาทำการเปลี่ยนแปลงกัน เราจะสร้างหน้าแรกของเราเองและแทนที่หน้าเริ่มต้น สร้างไฟล์ใหม่ที่ application/views/home.php และเพิ่มโค้ดต่อไปนี้:

<!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>

ที่นี่: โค้ด HTML ด้านบนจะโหลดเฟรมเวิร์ก CSS ของ Bulma และ Font Awesome จาก CDN และสร้างเอกสาร HTML พื้นฐานมาก ๆ โดยใช้กฎ CSS อย่างง่ายจากเฟรมเวิร์ก CSS ของ Bulma

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

แผ่นกระดาษ Codeหน้าหลักของ Igniter

เยี่ยมมาก เราได้แก้ไขหน้าแรกเสร็จเรียบร้อยแล้ว ต่อไปเรามาตั้งค่าเส้นทาง (route) กัน สมมติว่าแอปพลิเคชันของเราจำเป็นต้องแสดงหน้าเกี่ยวกับเราด้วย

สร้างเส้นทาง

เปิดไฟล์ routes ที่ application/config/routes.php แล้วเพิ่มเส้นทางต่อไปนี้:

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

ที่นี่:

  • เมื่อผู้เยี่ยมชมมาเยือน URL /เกี่ยวกับเรา เราให้คำแนะนำ CodeIgniter จะค้นหาคอนโทรลเลอร์ Welcome และเรียกใช้เมธอด about_us

สร้างคอนโทรลเลอร์

ต่อไปนี้เราจะกำหนดเมธอด about_us ในคอนโทรลเลอร์ เปิดไฟล์ application/controllers/Welcome.php แล้วเพิ่มเมธอดต่อไปนี้:

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

ที่นี่:

  • โค้ดด้านบนกำหนดฟังก์ชัน about_us และโหลดวิว about_us

สร้างมุมมอง

ต่อไปเรามาสร้างวิวที่เราเพิ่งอ้างถึงกัน สร้างไฟล์ใหม่ชื่อ about_us.php ใน application/views/about_us.php และเพิ่มโค้ดต่อไปนี้:

<!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>

เราพร้อมแล้ว เปิดสิ่งต่อไปนี้ URL ในเว็บเบราว์เซอร์ของคุณ: http://localhost:3000/index.php/about-usคุณจะเห็นหน้าต่อไปนี้:

Codeหน้าเกี่ยวกับเราของ Igniter

หากคุณเห็นหน้าเว็บด้านบน ขอแสดงความยินดี คุณได้สร้างแอปพลิเคชันอย่างง่ายสำเร็จแล้ว Codeตัวจุดไฟ

คำถามที่พบบ่อย

แผนที่แสดงเส้นทาง URL ส่วนย่อยไปยังคอนโทรลเลอร์และเมธอด เช่น 'welcome/about_us' เมื่อนั้น URL มีการร้องขอ CodeIgniter จะเรียกใช้เมธอดที่ระบุชื่อ ซึ่งจะโหลดและส่งคืนวิว

ฟังก์ชันนี้จะตั้งค่าคอนโทรลเลอร์ที่จัดการไดเร็กทอรีรากของเว็บไซต์เมื่อไม่มีการกำหนดค่าเฉพาะใดๆ URL มีการให้มาแล้ว ในตัวอย่างนี้ 'welcome' หมายถึงหน้าแรกที่แสดงผลโดยเมธอด index ของคอนโทรลเลอร์ Welcome

ไม่จำเป็นครับ เซิร์ฟเวอร์ PHP ในตัวที่เริ่มต้นด้วยคำสั่ง php -S localhost:3000 ก็เพียงพอสำหรับการรันตัวอย่างในเครื่องแล้ว Apache หรือ Nginx นั้นจำเป็นเฉพาะสำหรับการใช้งานจริงในสภาพแวดล้อมการผลิตเท่านั้น

ใช่แล้ว จากคำอธิบายของหน้าเว็บ AI สามารถสร้างเส้นทางเข้าใช้งาน วิธีการควบคุม และมุมมองที่เหมาะสมได้ping ชื่อต้องสอดคล้องกัน ตรวจสอบเส้นทางกับของคุณ Codeเวอร์ชัน Igniter

ตัวอย่างนี้ใช้ CodeIgniter 3 จัดเก็บคอนโทรลเลอร์และวิวไว้ในโฟลเดอร์ application/ CodeIgniter 4 ได้ปรับโครงสร้างไดเร็กทอรีและเนมสเปซใหม่ ดังนั้นเส้นทางและไวยากรณ์จึงแตกต่างกันในโปรเจกต์รุ่นใหม่ๆ

สรุปโพสต์นี้ด้วย: