Laravel 5.8 – EP6 การใช้งาน Controller

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 แบบนี้ครับ

Route::get(‘/blog’, ‘BlogController@index’);
Route::get(‘/blog/create’, ‘BlogController@create’);
Route::get(‘/blog/{id}’, ‘BlogController@show’);
Route::get(‘/blog/{id}/edit’, ‘BlogController@edit’);
Route::post(‘/blog’, ‘BlogController@store’);
Route::put(‘/blog/{id}’, ‘BlogController@update’);
Route::delete(‘/blog/{id}’, ‘BlogController@destroy’);
 
คือ Resources จะเตรียมโค๊ดแบบ CRUD มาให้เราเลย ส่วนใน Controller วิธีการสร้างแบบ Resource ให้ generate โค๊ดเอง ทำได้เพียงใช้คำสั่ง

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 ด้านล่างนี้เลยครับ

You May Also Like

About the Author: benext

โปรแกรมเมอร์ ติดต่อ : itoffside@hotmail.com

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.