URL ของโปรแกรมที่สร้างจาก คชสาร และหน้าที่เรียกใช้งาน
มีคำถามบ่อยมาก ว่าหากต้องการจะแก้ไขหน้าใดหน้าหนึ่งของโปรแกรมที่สร้างจากคชสาร จะต้องไปแก้ที่ไหน ซึ่งจริงๆ ผมได้เขียนไว้แล้วที่ใน คู่มือ Router หัวใจของเฟรมเวิร์ค ซึ่งเดาว่าคนคงไม่นิยมอ่านกัน ผมจะมาสรุปให้ตรงนี้อีกทีละกัน เนื่องจากว่า สุดท้ายแล้ว โปรแกรมที่สร้างจากคชสาร ใช้ URL เพียงรูปแบบเดียวเท่านั้น
ปกติแล้ว โดเมนที่พบบ่อยสำหรับคชสารคือ
เมื่อเรียก URL ข้างต้น คชสารจะไปเรียกไฟล์
modules/directory/controllers/page.php ที่เมธอด render หรือคลาส \Directory\Page\Controller::render มาทำงาน เป็นอันดับแรก หลังจากนั้นที่คลาสนี้จะไปทำการเรียกคลาสอื่นๆ ที่เกี่ยวข้องมาทำงานอีกที ซึ่งปกติแล้วจะเป็น
หน้าที่โดยปกติของ \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 ของตาราง
ปกติแล้ว โดเมนที่พบบ่อยสำหรับคชสารคือ
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\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 ของตาราง