
Controller คือหนึ่งในคอนเซปต์ ของ MVC ซึ่งมาจากตัวอักษรย่อ “C” นั้นเอง ซึ่งหน้าที่ของมันคือเป็นส่วนจัดการการ การทำงานของระบบ ซึ่งจะอยู่ระหว่างกลาง ของ Model และ View สำหรับบทความนี้เรามาเรียนรู้เกี่ยวกับdการสร้าง Controller, Middleware controller, resource controller ใน Laravel กันครับ
การสร้าง Controller
ให้เปิด Command line แล้วพิมพ์คำสั่ง Artisan CLI ตามด้านล่างนี้ครับ
Laravel จำทำการสร้างไฟล์ Controller มาให้เราเองซึ่งไฟล์จะอยู่ที่ app\Http\Controllers หลังจากนั้นเราเปิดไฟล์ BlogController.php แล้วเราจะเห็นตัวอย่างโค๊ดที่เขียนมาให้แล้ว
โดยไฟล์จะถูกสร้างไว้ที่ App/Http/Controllers แต่ถ้าเราไม่ต้องการให้มันสร้างผ่าน Artisan command เราสามารถ Create new file เองก็ได้เช่นกันครับ ไม่มีปัญหา
จากนั้นให้ใส่ ฟังก์ชั่น test() ลงไป จะได้เป็น
จากนั้นเราต้องไปกำหนดเส้นทางให้ชี้มาที่ Controller และ ฟังก์ชั่น test() ที่เราสร้าง โดยไปกำหนดที่ routes/web.php
ลองทดสอบ ดูบน Chrome จะได้ผลลัพธ์ ตามรูปภาพด้านล่าง
จบแล้วการใช้งาน controller ง่ายไหมครับ สำหรับการใช้งาน Controller ใน Laravel
Middleware In Controller
เพิ่มเติมส่วนของการใช้งาน auth midleware ใน Controller ครับ โดยเราสามารถใช้ middleware ได้โดยนำโค๊ดไปใส่ที่ __construct() ลองดูตัวอย่างโค๊ดด้านล่างนี้ครับ
จากตัวอย่างโค๊ดจะสังเกตุเห็นว่า ตอนที่ controller เราจะให้มีการตรวจสอบสิทธิ์ ทุกครั้งก่อนเสมอ
Resource Controllers
เป็นการเขียน Controller ที่มี CRUD (Create, Read, Update, Delete) ครบครัน ด้วยการเขียน routes/web.php เพียงบรรทัดเดียว เท่านั้น อยากให้นึกภาพให้เห็น การที่ Controller เรามีหลายๆ ฟังก์ชั่น เช่น index(), Create(), Show() เราจำเป็นต้องเขียน Routes หลายบรรทัด เช่น
แล้วถ้าใน controller มีมากกว่านี้ เราจะทำอย่างไร ดังนั้น Resource Controller จะมาช่วยทำ โดยเราเขียน โค๊ดใน Route เพียงการโค๊ด
สิ่งที่เราได้จากโค๊ดนี้ เปรียบเสมือนเราเขียน Route แบบนี้ครับ
Artisan command ก็จะ generate ไฟล์พร้อมโค๊ด ที่มีฟังก์ชั่น index(), create(), show($id), edit($id), store($reqeuset), update($reqeust, $id), destroy($id) มาให้เราโดยไม่ต้องพิมพ์ใดๆเลย
ส่วนความหมายแต่ละฟังก์ชั่นมีดังนี้
Verb | URI | Action | Route Name | Description |
---|---|---|---|---|
GET | /blog |
index | blog.index | หน้าแรก |
GET | /blog/create |
create | blog.create | หน้า Create |
POST | /blog |
store | blog.store | ฟังก์ชั่นการ Insert ข้อมูล |
GET | /blog/{id} |
show | blog.show | หน้าแสดงข้อมูลตาม ID |
GET | /blog/{id}/edit |
edit | blog.edit | หน้าแก้ไขข้อมูล |
PUT/PATCH | /blog/{id} |
update | blog.update | ฟังก์ชั่นการ Update ข้อมูล |
DELETE | /blog/{id} |
destroy | blog.destroy | ฟังก์ชั่นการ Delete ข้อมูล |
สำหรับบทความนี้ก็จบเพียงเท่านี้หากมีปัญหาหรือคำถามใดๆ สามารถสอบถามได้ทาง comment ด้านล่างนี้เลยครับ