URL ของโปรแกรมที่สร้างจาก คชสาร และหน้าที่เรียกใช้งาน

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

ปกติแล้ว โดเมนที่พบบ่อยสำหรับคชสารคือ
https://domain.com/index.php?module=directory-page

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

หน้าที่โดยปกติของ \Directory\Page\Controller (Controller) ที่เรียกมาจาก URL ส่วนใหญ่ผมจะใช้ในการตรวจสอบสิทธิ์การเข้าถึงหน้าเพจนั้นๆ ตลอดจน เตรียมส่วนหัวของหน้า (เช่นไตเติล Breadcrumbs การเลือกเมนู) หลังจากนั้นถึงจะส่งไปให้ \Directory\Page\View (View) ในการจัดการแสดงผล ตาราง หรือ ฟอร์ม ที่ต้องการ ส่วน Model ผมจะใช้ในการอ่านข้อมูลเพื่อส่งให้ตาราง หรือ ส่งให้ฟอร์ม ตลอดจนรับค่าการกระทำต่างๆจากตาราง และ รับค่าจากการ Submit ฟอร์ม

มี URL อีกรูปแบบทีอาจจะพบได้ คือ index.php/directory/model/page/action จะเป็นการเรียกไปยังไฟล์ modules/directory/models/page.php ที่เมธอด action หรือคลาส \Directory\Page\Mode:action ซึ่งปกติแล้ว URL ลักษณะนี้จะใช้เป็น action ของตาราง
0SHAREFacebookLINE it!