อาทิตย์, กุมภาพันธ์ 05, 2555
   
Text Size
ป้ายโฆษณา

Component Development Part 1 Model-View-Controller

( 5 Votes )
ดัชนีบทความ
Component Development Part 1 Model-View-Controller
Bookman-State-Diagram
ทุกหน้า

ก่อนที่เราจะมาเริ่มต้นการพัฒนา Joomla Component แบบ Native mode นั้น เพื่อที่เราจะได้ใช้ประโยชน์เต็มที่จาก Joomla Framework เราจำเป็นต้องมาทำความเข้าใจกับการพัฒนา Component โดยใช้หลักการของ Model-View-Controller หรือเรียกย่อๆ ว่า MVC ก่อนอื่นเรามาดูก่อนว่า MVC คืออะไร

MVC ประกอบด้วยส่วนประกอบหลักสามส่วนคือ

  1. Model เป็นส่วนที่ทำหน้าที่ในการ access ข้อมูลโดยทั่วไปก็คือจะมีส่วนของการ access ฐานข้อมูล และส่วนที่ทำหน้าที่ที่เรียกว่า Business Logic คือจะประมวลผลข้อมูลอย่างไร ซึ่งจะเป็นไปตาม Requirements ที่เรียกว่า Business Requirements นั่นเอง
  2. View ทำหน้าที่ในการแสดงผลในรูปแบบต่างๆ เช่น HTML PDF หรือ RSS เป็นต้น โดยในส่วนของ View จะทำงานโดยต้องใช้ข้อมูลจาก Model นอกจากนี้จะยังมีส่วนของ Template มาเกี่ยวของด้วย ใน Joomla 1.5 เรียกส่วนนี้ว่า Layout
  3. Controller เป็นส่วนประกอบที่ทำหน้าที่ในการวิเคราะห์ Request จากผู้ใช้ และทำการ Load View และ Model ที่ตรงตาม Request ของ User โดยใน Joomla 1.5 เราจะสามารถมี Controller ได้ตั้งแต่ 1 ตัวขึ้นไป โดยปกติเราจะใช้ 1 Contrloller ต่อ 1 Entity (Entity ตาม ER Diagram)

ใน Joomla 1.5 จะมี Class ที่ให้เราใช้สำหรับ Model View และ Controller ซึ่งก็คือ JModel JView และ JController ตามลำดับ โดยทั้งสาม Class มี Class แม่ตัวเดียวกัน คือ JObject ซึ่ง Class เกือบทั้งหมดใน Joomla Framework จะมี JObject เป็น Class แม่ นอกจากนี้แล้วใน Joomla 1.5 จะยังมีการแบ่ง Folder ใน Component Root ที่เราพัฒนาด้วย ดังนี้

  1. controllers สำหรับเก็บ Controllers ต่างๆ โดยการตั้งชื่อไฟล์จะใช้ชื่อตาม Identity เช่นถ้าเรามี Book และ Reservation เป็น identity เราจะมี book.php และ reservation.php เป็นต้น
  2. models สำหรับการเก็บไฟล์ Model ต่างๆ เช่นกันเราก็จะมีชื่อไฟล์ตาม Entity เช่น book.php และ reservation.php
  3. views สำหรับเก็บไฟล์ที่ใช้สำหรับการแสดงผลในรูปแบบต่างๆ โดยแบ่งเป็น Folder ย่อยๆ ตาม Entity (หรือ Controller) เช่น book และ reservation และใน Folder ย่อยๆ ก็จะมีไฟล์ตามรูปแบบการแสดงผล เช่น view.html.php จะเก็บ class สำหรับการแสดงผลในรูปแบบ HTML หรือ view.pdf.php จะเก็บ class สำหรับใช้ในการแสดงผลเป็น PDF นั่นคือรูปแบบการตั้งชื่อจะเป็น view.TYPE.php โดย TYPE ก็คือรูปแบบการแสดงผล นอกจากนี้ในแต่ละ Folder ย่อยนี้จะมี Folder ของ template ด้วย โดยใช้ชือ่ว่า tmpl โดยใน Folder นี้จะเก็บ layout ในชื่อต่างๆ เช่น default.php คือ template ที่จะเรียกใช้อัฒนโนมัติหากไม่มีการระบุ template ใดๆ นอกจากนี้เราอาจจะมี alternative.php สำหรับ layout อีกแบบที่ต่างออกไป
  4. tables อันนี้จะเป็นส่วนหนึ่งของ model คือใช้ในสำหรับการติดต่อ database ซึ่งจะเรียกใช้ใน model ซึ่งใน Joomla 1.5 จะมี base class ชื่อ JTable ซึ่งถ้าเทียบกับ Joomla 1.0 ตัว class นี้ก็คือ mosDBTable นั่นเอง
  5. helpers ไว้สำหรับเก็บ class อื่นๆ ที่ไม่เกี่ยวของ กับ class ทั้งหมดในข้อข้างบน
  6. assests เก็บไฟล์ประเภท css หรือ images

 Component Folder based on MVC

 นอกจากนี้ใน Component root path เราจะมีไฟล์สองตัวที่สำคัญคือ ไฟล์ที่มีชื่อเหมือน component ของเรา เช่น component ของเราชื่อ bookman เราจะต้องมีไฟล์ ใน Component root path (ในที่นี้คือ [Joomla ROOT]/components/com_bookman) ชื่อ bookman.php เป็นไฟล์หลักที่ Joomla! จะเรียก Component ของเราขึ้นมาทำงานเช่นเดียวกับของ Joomla! 1.0 นอกจากนั้นก็จะมี controller.php สำหรับเก็บ controller class ในกรณีที่เรามีแค่ 1 controller หรือ เป็น class แม่ของเราในกรณีที่เรามี่หลายๆ controller และไฟล์ที่สามก็คือไฟล์ที่ชื่อว่า router.php สำหรับไฟล์นี้ใช้สำหรับทำให้ compoent ของเรารองรับการทำ SEO คือทำหน้าที่ในการถอด และประกอบ URL ซึงไฟล์นี้เราทำหลังสุดหลังจากทำส่วนอื่นๆ เสร็จแล้วนะครับ

 



JoomlaWatch Stats 1.2.8b_12-dev by Matej Koval
Restore Default Settings