Component Development Part 3 Adding View
แก้ไขล่าสุด ใน วันอาทิตย์ที่ 19 กรกฏาคม 2552 เวลา 13:34 น. เขียนโดย MrS.Siam วันเสาร์ที่ 20 มิถุนายน 2552 เวลา 10:09 น.
| ดัชนีบทความ |
|---|
| Component Development Part 3 Adding View |
| Books' Default Layout |
| ทุกหน้า |
ในสองตอนที่แล้ว เรามีการพูดถึง Controller และ based Controller ไปแล้ว ในตอนนี้เราจะมาดู View ที่เราจะใช้ในครั้งนี้กัน เรามาดูที่ folder กันก่อนครับ ใน Joomla Componet เราจะทำการเก็บ Views ไว้ใน folder /components/com_COMPONENT_NAME/views/VIEW_NAME เช่นในกรณี View ของ Bookman ที่ชื่อ books ก็จะเก็บที่
/components/com_bookman/views/books
โดยใน folder นี้จะมี folder ย่อยชื่อ tmpl สำหรับเก็บ layout เช่น default (default.php) ซึ่งเป็นรูปแบบการแสดงที่ Joomla จะ load โดยอัฒโนมัติในกรณีที่เราไม่กำหนด นอกจากนี้เราจะเก็บไฟล์ View ในรูปแบบ view.[TYPE].php เช่น
view.html.php แสดงข้อมูลในรูปแบบ HTML
view.pdf.php แสดงข้อมูลในรูปแบบ PDF
view.rss.php แสดงข้อมูลในรูปแบบ RSS
โดยเรายังมีรูปแบบการตั้งชื่อ class ของ View เป็น [COMPONENT_NAME]View[ENTITY_NAME] เช่นในกรณีนี้ คือ BookmanViewBooks ดู code ตามรูปด้านล่างครับ

มาดู code กันครับ class ของเราก็ extends มาจาก Joomla JView ซึ่งเรา include มาในบรรทัดที่ 6
บรรทัดที่ 12 ทำการ load model ในที่นี้คืิอ books ซึ่งคือ default model
บรรทัดที่ 14 เรียก method เพื่อทำการ load ข้อมูลหนังสือทั้งหมด เราค่อยมาดู Model ในตอนหลังนะครับ
บรรทัดที่ 15 ทำการ assign ค่าตัวแปร books ใน layout โดยเป็นการ assign แบบ reference นะครับ
บรรทัดที่ 17 ทำการ display layout ครับ
จะเห็นว่าใน view.html.php เราจะยังไม่มี code HTML เลยนะครับ อันนี้เป็นหลักการทีั่เราต้องปฏิบัติตามนะครับ เพื่อให้ง่ายในการดูแลรักษา code ต่อไป โดย function ที่สำคัญชอง view ก็คือ display ซึ่งจะเป็นการ load template ขึ้นมาและทำการแสดงให้ผู้ใช้ และสิ่งสำคัญก็คือเราต้องทำการ call function display ของ class แม่คือ JView ซึ่งถ้าดูใน code ของ JView เราจะเห็นการ load ไฟล์ template หรือ layout เพื่อทำการแสดงผล ถ้าสังเกตุให้ดีสำหรับผู้คุ้นเคยกับ template class เช่น Savant เราก็จะเห็นว่ามันจะมี function Assign และ AssignRef ในการส่งค่าให้กับ template เช่นเดียวกับ class เหล่านั้น สำหรับในส่วนของ View อย่าลืมนะครับว่าเราจะใช้ข้อมูลจาก Model เท่านั้น แต่จะไม่มีการ Modify หรือเปลี่ยนสถานะของข้อมูลเนื่องจากถือว่าเป็นการฝ่าฝืนกฎของ MVC ใน View หนึ่งๆ เราจะสามารถ assign Model ได้มากกว่าหนึ่ง ซึ่งจะทำในส่วนของ Controller ที่เกี่ยวข้องกัน
ขั้นตอนต่อไปเราก็มาดูส่วนของ template layout ที่จะแสดง HTML code สำหรับส่งให้ผู้ใช้กันต่อครับ


