พัฒนาระบบลงทะเบียน Online ตอนที่ 2
แก้ไขล่าสุด ใน วันพฤหัสบดีที่ 30 กันยายน 2553 เวลา 23:41 น. เขียนโดย MrS.Siam วันอังคารที่ 30 มิถุนายน 2552 เวลา 00:29 น.
| ดัชนีบทความ |
|---|
| พัฒนาระบบลงทะเบียน Online ตอนที่ 2 |
| base-controller |
| ทุกหน้า |
ในตอนนที่แล้วเราได้มีการออกแบบและสร้างตารางสำหรับระบบลงทะเบียน Online ไปแล้ว รวมทั้งเราได้ Entity และ task คร่าวๆ กันไปแล้ว ในตอนนี้เราจะมาดำเนินการในขั้นตอนต่อไปคือการสร้างไฟล์ XML ง่ายๆ เพื่อทำการติดตั้ง Component ผ่าน Backend ของ Joomla! โดยเมื่อเราติดตั้ง Component แล้วระบบจะสร้าง record ใน jos_compomponents ให้เราโดยเราไม่ต้องไปยุ่งยากในการสร้าง record ในตารางโดยตรง นอกจากนี้แล้วการติดตั้ง Component ผ่านระบบ Backend ทำให้เราสามารถสร้าง menu สำหรับ Component ได้อีกด้วย ซึ่งจะมีประโยชน์ในกรณีที่เรามีการใช้ parameter แตกต่างกันสำหรับแต่ละเมนู อย่าลืมนะครับว่าเราไมสามารถติดตั้ง Component ซ้ำได้ แต่สามารถสร้างเมนูสำหรับ Component ได้มากกว่าหนึ่งเมนูและกำหนดให้ใช้ parameter ต่างกัน และนำเสนอแตกต่างกันตาม parameter ที่ใช้ได้ ลองนึกถึงการใช้งาน Docman component กับ Document Category ที่แตกต่างกันนะครับ
XML Installation File
ไฟล์ XML ที่เราสร้างขึ้นมาในที่นี้เราจะใช้รูปแบบอย่างง่ายเพื่อให้เพียงพอติดตั้งผ่าน Joomla Backend เท่านั้นนะครับ รายละเอียดของ XML ที่ใช้ในการติดตั้งนั้นเราจะกลับมาพูดถึงอีกทีในตอนหลังๆ ของบทความ

หลังจากได้ตัว XMLแล้วเราก็ต้องมาสร้างไฟล์ Zip สำหรับเตรียมการติดตั้งนะครับ โดยในเบื้องต้นเราสร้าง folder ขึ้นมาสอง folder ตาม XML code คือ site และ admin โดยใน folder นี้ก็แค่ไฟล์ index.html สำหรับป้องกันการทำ directory listing เท่านั้นครับ จากนั้นก็ทำการ zip ตัว folder นี้พร้อมกับไฟล์ XML แล้วทำการติดตั้งผ่าน Joomla Backend โดยเมื่่อเราติดตั้งสำเร็จ Joomla จะสร้าง folder ให้เราดังนี้คือ
/components/com_regonline/ ผู้เขียนขอเรียกว่า Component Root นะครับ
/administrator/components/com_regonline/ ผู้เขียนขอเรียกว่า Administrator Component Root
สำหรับ Component Root นี้จะเป็น folder หลักที่เราจะทำงานกับ component ของเราในช่วงแรกๆ โดยท่านสามารถ download ไฟล์ Zip สำหรับติดตั้งได้จากตอนท้ายของบทความครับ
Dispatcher
หลังจากทำการติดตั้งแล้วลองสร้างเมนูสำหรับ component ของเรากันเลยครับ แต่ตอนนี้เรายังไม่สามารถใช้งานอะไรได้ได้นะครับ ลอง click ดูที่เltมนูที่สร้างขึ้นเราก็จะเจอ Error 404 ครับ เนื่องจาก Joomla หาไฟล์ regonline.php ซึ่งเป็นไฟล์หลักของระบบลงทะ้เบียน online ไม่เจอ ทีนี้เรามาเริ่มสร้างไฟล์ regonline.php ตามรูปด้านล่างครับ

บรรทัดที่ 19 ตัวนี้สำหรับตอนทดสอบเท่านั้นครับ ใช้จริงต้องเอาออกไป
บรรทัดที่ 21 เราทำการ include ไฟล์ controller.php ซึ่งอยู่ใน componet root
บรรทัดที่ 24 สร้าง object ของ controller subclass ที่ต้องการ ตรงนี้เราใช้ static function ของ base controller ในการสร้าง object ของทุกๆ subcontroller โดยทำการผ่านค่า Prefix ซึ่งเป็นชื่อ component ของเรา และกำหนด default controller/task สำหรับกรณีที่เรียกโดยไม่มีค่า task ใน URL
บรรทัดที่ 29 ทำการ run function ชื่อเดียวกับตัวแปร task ของ controller subclass โดย default function ก็คือ display
จากบรรทัดที่ 21 เราจะเห็นว่าเรามีการใช้ CONSTANT ที่กำหนดไว้แล้วใน Joomla! 1.5 คือ DS (Directory Separator เช่น ใน Linux คือ / และ JPATH_COMPONENT คือ root component folder ในฝั่ง front end ในกรณีนี้คือ [JOOMLA INSTALL PATH]/components/com_regonline/ ใน Joomla! 1.5 ยังมีตัวแปรอื่นๆ อีกคือ
JPATH_BASE คือ directory ที่เราติดตั้ง Joomla เป็น absolute path แบบใน Joomla! 1.0
JPATH_ADMINISTRATOR คือ directory ของ Joomla Administrator (/administrator)
JPATH_COMPONENT_ADMINISTRATOR คือ backend folder ของ component ของเราครับ เช่น /administrator/components/com_regonline/
ตอนนี้เราได้ dispatcher สำหรับ componet ของเราแล้วนะครับ แต่ยังคง run ไม่ได้จนกว่าเราจะสร้าง controller.php และ controller subclass รวมทั้ง views ด้วย


