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

Component Development Part 3 Adding View

( 3 Votes )
ดัชนีบทความ
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 ตามรูปด้านล่างครับ

 

ิviews/books/view.html.php

มาดู 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 สำหรับส่งให้ผู้ใช้กันต่อครับ



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