เข้าใจโครงสร้าง Kotchasan วิธีแก้ไขหน้าเพจและโค้ดที่เกี่ยวข้อง

มีคำถามบ่อยครั้งเกี่ยวกับการแก้ไขหน้าใดหน้าหนึ่งของโปรแกรมที่สร้างด้วย Kotchasan ว่าต้องแก้ที่ไฟล์ใด แม้ว่าผมจะได้เขียนอธิบายไว้ใน คู่มือ Router หัวใจของเฟรมเวิร์ค แต่ดูเหมือนว่าหลายคนอาจจะไม่ได้อ่าน ดังนั้น ผมจะสรุปให้ตรงนี้อีกครั้ง
โครงสร้าง URL และไฟล์ที่เกี่ยวข้อง
Kotchasan ใช้ URL รูปแบบเดียว ในการเข้าถึงหน้าเพจต่างๆ โดยโครงสร้าง URL ที่พบบ่อยคือ
https://domain.com/index.php?module=<directory>-<page>
เมื่อเรียก URL ข้างต้น เฟรมเวิร์คจะไปเรียกไฟล์
modules/<directory>/controllers/<page>.php
โดยเมธอด render
หรือคลาส \Directory\Page\Controller::render
จะทำงานเป็นอันดับแรก แล้วจึงเรียกคลาสอื่นๆ ที่เกี่ยวข้อง ได้แก่
-
View (แสดงผลหน้าเพจ)
- ไฟล์:
modules/<directory>/views/<page>.php
- คลาส:
\Directory\Page\View
- ไฟล์:
-
Model (จัดการฐานข้อมูลและข้อมูลที่ใช้ในเพจ)
- ไฟล์:
modules/<directory>/models/<page>.php
- คลาส:
\Directory\Page\Model
- ไฟล์:
กรณีไม่มีการระบุ directory
หากไม่มี directory
ใน URL เช่น
https://domain.com/index.php?module=page
ระบบจะไปเรียกใช้ไฟล์ที่อยู่ใน ไดเรกทอรี index
เช่น
\Index\Controller\Page
หน้าที่ของแต่ละส่วนใน MVC
-
Controller (
\Directory\Page\Controller
)- ตรวจสอบสิทธิ์การเข้าถึงเพจ
- กำหนดส่วนหัวของหน้า เช่น Title, Breadcrumbs, เมนู
- ส่งข้อมูลไปยัง View
-
View (
\Directory\Page\View
)- จัดการแสดงผล เช่น ตาราง หรือ ฟอร์ม
-
Model (
\Directory\Page\Model
)- ดึงข้อมูลจากฐานข้อมูลให้กับ View
- รับค่าจากตารางหรือฟอร์มที่ถูกส่งมา
โครงสร้าง URL สำหรับการเรียกใช้ Model
นอกจาก URL แบบปกติแล้ว อาจพบ URL ในรูปแบบ
index.php/<directory>/model/<page>/action
ซึ่งจะเป็นการเรียกใช้เมธอด action
ใน Model ที่เกี่ยวข้อง
modules/<directory>/models/<page>.php
โดยทั่วไป URL นี้จะใช้สำหรับ Action ของตาราง เช่น บันทึก ลบ หรืออัปเดตข้อมูล