คู่มือการใช้งาน Admin Framework by Kotchasan ตอนที่ 1

กลไกการเรียกหน้าเว็บของระบบก็จะเป็นไปตามกฎปกติของคชสาร คือเรียกไปยัง defaultController หรือคือ \Index\Index\Controller (ไฟล์ modules/index/controllers/index.php ซึ่งต่อไปผมจะอ้างถึงคลาสเพียงอย่างเดียว ไม่อธิบายพาธของไฟล์อีกนะครับ) เริ่มต้นเมื่อมีการเรียกหน้าเว็บ ก็จะถูกเรียกไปยัง index.php ซึ่งที่ไฟล์นี้จะทำการโหลดคชสาร และส่งต่อให้กับ defaultController ซึ่งภายใน defaultController จะทำหน้าที่ตั้งแต่การเตรียมระบบ โหลดโมดูล จนกระทั่งเตรียมการแสดงผล แล้วส่งกลับมาแสดงผลยังบราวเซอร์ ซึ่งขั้นตอนทั้งหมดจะเป็นไปตามไดอะแกรมด้านล่าง

ในกรณีที่มีการเข้าระบบแล้ว ก็จะไปจัดการเตรียมเมนูและโหลดเมนูที่ Index\Menu\Controller โดยที่รายการเมนูหลักทั้งหมดจะอยู่ที่ Index\Menu\Model การเพิ่มลดและแก้ไขเมนูหลักสามารถทำได้ที่นี่เลย (รวมถึงการซ่อน-แสดงเมนูตามสิทธิ์ก็สามารถทำได้ที่นี่เช่นกัน) ในกรณีที่มีการติดตั้งโมดูลอื่นๆร่วมด้วย เมนูของโมดูลต่างๆ จะถูกแยกไปจัดการที่โมดูลแต่ละตัว ยกตัวอย่างเช่นโมดูล Demo เมนูของโมดูลนี้จะอยู่ที่ Demo\Init\Controller::execute() ซึ่งจริงๆแล้ว method นี้จะถูกเรียกเพื่อเตรียมการโหลดโมดูล ซึ่งสามารถเขียนคำสั่งอื่นๆที่ต้องการเพิ่มเติมได้ (ข้อควรระวัง ลำดับการโหลดโมดูลจะไม่สามารถกำหนดได้ ไม่ควรเขียนคำสั่งที่จำเป็นต้องโหลดโมดูลตามลำดับ)
หลังจากเตรียมเมนูเรียบร้อยแล้ว ก็จะถูกส่งไปคัดแยกหน้าหรือโมดูลที่ต้องการที่ Index\Main\Controller ซึ่งเงื่อนไขการคัดแยกหลักจะอยู่ที่ module=xxx ใน URL
- module=page ถ้า URL มีลักษณะแบบนี้ จะเป็นไปได้ 2 ทาง คือถ้า page เป็นชื่อโมดูลจะไปเรียก Page\Index\Controller (Page คือโมดูล page) ในกรณีที่ตรวจไม่พบชื่อโมดูลจะถูกส่งไปที่ Index\Page\Controller แทน โดยที่ Page ในกรณีนีจะเป็น Controller ตัวหนึ่งของโมดูล Index นั่นเอง และสุดท้าย ในกรณีที่ไม่พบหน้าที่เกี่ยวข้องเลยก็จะไปเรียกหน้า Home มาแสดงแทน (Index\Home\Controller)
- module=module-page module ตัวที่สองคือชื่อโมดูลที่ต้องการตามกฏข้อแรก ส่วน page ก็คือ Controller ที่ต้องการของ module ที่เรียกมา เช่น module=demo-table ก็จะถูกเรียกไปยัง Demo\Table\Controller เป็นต้น
ยังมีหน้าเว็บอีกประเภท คือหน้าเว็บที่ถูกโหลดโดย GLoader ซึ่งก็คือหน้าเว็บที่ถูกเรียกโดย URL #module=module-page (ง่ายๆเลยคือ URL ที่อยู่หลังเครื่องหมาย # ทั้งหมด) ซึ่ง URL ลักษณะนี้จะถูกโหลดโดย GLoader ด้วย Ajax โดยในการโหลดหน้าแต่ละครั้งจะถูกส่งไปโหลดหน้าที่ loader.php แทน ซึ่งในหน้านี้การโหลดหน้าเว็บจะถูกเปลี่ยน defaultController เป็น Index\Loader\Controller แทน ซึ่งที่ Controller นี้จะมีการทำงานที่คล้ายคลึงกับไดอะแกรมด้านบน ยกเว้นแค่ไม่มีส่วนของการโหลดเมนูเท่านั้น ส่วนการเรียกไปยังโมดูลที่ต้องการ ยังคงเรียกไปยังโมดูลเดิมที่เรียกโดย index.php
จากที่กล่าวมาทั้งหมดจะเห็นว่า Admin Framework ได้จัดเตรียมขั้นตอนพื้นฐานต่างๆทั้งหมดไว้ให้แล้ว ทำให้ในการออกแบบ เราไม่จำเป็นต้องไปสนใจขั้นตอนเหล่านี้ และไปทำเพียงขั้นตอนต่างๆในส่วนของโมดูลเท่านั้น ซึ่งก็จะทำให้การออกแบบง่ายขึ้น