แนวคิด MVC กับการใช้งานใน joomla

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
samsonnaze3
PHP Hero Member
PHP Hero Member
โพสต์: 190
ลงทะเบียนเมื่อ: 04/03/2012 1:06 am

แนวคิด MVC กับการใช้งานใน joomla

โพสต์โดย samsonnaze3 » 28/03/2012 12:10 pm

ตัวอย่างแนวคิดการทำงานแบบ MVC ครับ

1.User ได้ทำการ Request หน้าเพจเข้ามา เช่น xxxx.php มันก็จะส่งเข้ามาที่ตัว Controller ก่อน ซึ่ง ตัว Controller นี้คือการจัดการทุกอย่างที่ User Request เข้ามา โดยกำหนดค่าไปที่ task ตามเงื่อนไขต่างๆ เช่น เช็คว่ามีการดึงฐานข้อมูลมาใช้ไหม ในหน้า xxxx.php ถ้ามีการดึงฐานข้อมูล เช่น Form_Edit ที่ต้องใช้ข้อมูลเก่าในการดึงมาใช้งาน ก็จะส่งค่า task ไปที่ Model แต่ถ้า ไม่มีการดึงฐานข้อมูลมาใช้ เช่น Form_Add ก็จะส่งค่า task ไปที่ View เลย

2.ถ้า controller มีการส่งค่า task มาว่า ต้องมีการดึงฐานข้อมูลมาใช้นะ ก็จะมาทำงานใน Model ซึ่ง ใน Model นี้จะเป็นการเช็คว่า Controller ส่ง task อะไรมา และต้องทำการดึงข้อมูลจากฐานข้อมูล ไหนมาและทำงานอะไรอย่างไร เสร็จแล้วก็ทำการ Return ค่าไปให้ Controller แล้ว Controller ก็จะส่งค่าข้อมูลที่ได้ไปที่ view ตามที่ User Request มา

3.แต่ถ้าไม่มีการดึงฐานข้อมูลใดๆเลย Controller ก็จะกำหนดเปิดการใช้งาน View โดยตรงเลย โดยไม่ต้องผ่าน Model เช่น Form_add แต่ถ้ามีการเพิ่มข้อมูลแล้ว ในส่วนของ View ก็จะส่งค่าที่ทำการเพิ่มนั้นไปที่ Model เพื่อทำการเพิ่มข้อมูลลงไปในฐานข้อมุล แล้วในตัว Model ก็จะมีการเช็คเงื่อนไขต่างๆว่า ข้อมูลที่เพิ่มมา ถูกต้องหรือครบถ้วนไหม ถ้าไม่ถูกต้องหรือไม่ครบถ้วน ก็จะ Return ค่ากลับไปที่ Controller แล้ว Controller ก็จะทำการเปิด View ใหม่อีกครั้งเพื่อให้ข้อมูลสมบูรณ์

4.เมื่อข้อมูลต่างๆมาถึง View แล้ว มันก็จะส่งค่ากลับไปให้ Controller แล้ว Controller ก็จะส่งค่า Respond ไปให้ User


**ในการทำ MVC นั้น ท่านสามารถทำใน Joomla ได้ ซึ่ง ท่านสามารถเข้าไปดูวิธีการทำ MVC ใน Joomla ได้ที่ บทเรียน Joomla Framwork

ข้อควรจำ
- Model ไม่มีการส่งค่าให้กับ View
- การกระทำ 1 ครั้ง ก็จะเท่ากับ การ Request ของ User 1 ครั้ง เช่น การเปิด form ใช้งาน ก็จะเป็นการ Request ครั้งที่ 1 และเมื่อใส่ข้อมูลลงไปใน form แล้วกดปุ่ม submit ก็จะเป็นการ Request ครั้งที่ 2
- task คือ การกำหนดการกระทำต่างๆที่ User Request เข้ามา เช่น ถ้าเป็นการเซฟข้อมูล ก็จะเป็น task เซฟ
แนบไฟล์
User-icon.png
User-icon.png (35.83 KiB) เปิดดู 2810 ครั้ง
แก้ไขล่าสุดโดย samsonnaze3 เมื่อ 28/03/2012 1:04 pm, แก้ไขไปแล้ว 5 ครั้ง.
รูปภาพ

ภาพประจำตัวสมาชิก
samsonnaze3
PHP Hero Member
PHP Hero Member
โพสต์: 190
ลงทะเบียนเมื่อ: 04/03/2012 1:06 am

Re: แนวคิด MVC กับการใช้งานใน joomla

โพสต์โดย samsonnaze3 » 28/03/2012 12:22 pm

ตัวอย่างแนวคิด MVC แบบ form ที่มีการเรียกใช้ฐานข้อมูล

*****การแก้ไขข้อมูลสมาชิก*****

1.User ทำการ Request หน้า form_edit ขึ้นมา มันก็จะทำการส่งค่า Request ไปยัง Controller ซึ่ง เมื่อ Controller เช็คแล้วว่า นี้เป็น form ที่ต้องมีการเรียกใช้ ข้อมูลเก่าที่สมาชิกเคยสมัคร ก็จะทำการส่งค่า task ไปยัง Model เพื่อให้ Model นั้น ทำการ Query ค่าข้อมูลของสมาชิกคนนี้ออกมา

2.เมื่อมีการส่งค่า task จาก Controller มาให้ Model แล้ว ในตัว Model ก็จะทำการเช็คว่าเป็น task ไหนและต้องทำการ ดึงข้อมูลอะไร ในฐานข้อมูลอะไร เมื่อทำงานเสร็จแล้วก็จะ Return ค่าที่ได้ ไปที่ Controller

3.เมื่อ Controller ได้รับค่าที่ Return จาก Model มาแล้ว Controller ก็จะกำหนดค่าว่า ไปที่ View ไหน โดยในตัว View นี้จะเป็นหน้า form ที่มี Input Object ต่างๆ รอคอยการแก้ไขจาก User ตามที่ User Request มา

4.เมื่อมาถึงหน้า form แล้ว ใน view ก็จะมีการส่งค่ากลับไปที่ controller แล้ว controller ก็จะส่งค่า Respond กลับไปให้ User

5.จากนั้นเมื่อผู้ใช้ได้เห็นหน้า form การแก้ไขแล้ว และได้ทำการแก้ไข และกด เซฟ ข้อมูลแล้วนั้น จะเป็นการ Request อีกรอบหนึ่ง ซึ่ง การ Request ก็จะส่งไปที่ Controller เมื่อ Controller เช็คแล้วว่า นี้คือการ เซฟข้อมูลนะ ก็จะส่งค่า task เซฟ ไปที่ Model ซึ่งเมื่อ Model รับค่าว่า นี้เป็นการกระทำ เซฟข้อมูลนะ ก็จะทำการ update ฐานข้อมูลตามที่ User ทำการกรอกแก้ไขมาใหม่ แล้วก็ Return ค่ากลับไปที่ Controller

6. เมื่อ Controller ได้รับค่า Return จาก Model แล้ว ก็จะทำการ ส่งค่า Respond กลับไปให้ User
รูปภาพ

tung_mm

Re: แนวคิด MVC กับการใช้งานใน joomla

โพสต์โดย tung_mm » 07/07/2013 9:22 pm

ขอบคุณมากครับ


  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 16 และ บุคคลทั่วไป 0 ท่าน